Pergunta

Existe uma maneira de fazer o jQuery esperar uma certa quantidade de tempo antes de o evento de mouseout ser demitido?

Ele está disparando muito cedo no momento e eu prefiro esperar 500ms antes de avaliar o mouse para fora. Um exemplo do código que estou usando abaixo.

$('.under-construction',this).bind({
    mousemove: function(e) {
        setToolTipPosition(this,e);
        css({'cursor' : 'crosshair' });
    },
    mouseover: function() {
        $c('show!');
        showUnderConstruction();
    },
    mouseout: function() {
        $c('hide!');
        hideUnderConstruction();
    },
    click: function() {
        return false;
    }
});

Existe uma maneira jQuery de fazer isso ou terei que fazer isso sozinho?

Foi útil?

Solução

Divida a lógica dentro do mouseout em outra função. no mouseout até chamar essa função com um setTimeout("myMouseOut", 500). E você pode combinar o mouseover evento com um clearTimeout() Para redefinir o temporizador se o usuário se mover para um novo elemento.

Outras dicas

Você sempre pode envolver sua lógica em um setTimeout() função.

mouseout: function() {
  setTimeout(function(){
    $c('hide!');
    hideUnderConstruction();
  }, 500);
}

Você pode conferir o Plugin Hoverintent Permite definir alguns VARs que ajudam nas interações MouseEnter/OUT

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top