Jquery - задержка события мыши - PullRequest
3 голосов
/ 15 февраля 2010

Есть ли способ заставить jquery ждать определенное количество времени, прежде чем событие mouseout запускается?

В данный момент он срабатывает слишком рано, и я предпочел бы подождать 500 мс, прежде чем он оценит мышьиз.Пример кода, который я использую ниже.

$('.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;
    }
});

Есть ли способ сделать это в jquery или мне придется сделать это самому?

Ответы [ 3 ]

8 голосов
/ 15 февраля 2010

Разделить логику внутри mouseout на другую функцию. в mouseout даже вызовите эту функцию с помощью setTimeout("myMouseOut", 500). И вы можете объединить событие mouseover с clearTimeout() для сброса таймера, если пользователь переходит в новый элемент.

5 голосов
/ 15 февраля 2010

Вы всегда можете обернуть свою логику в функцию setTimeout().

mouseout: function() {
  setTimeout(function(){
    $c('hide!');
    hideUnderConstruction();
  }, 500);
}
3 голосов
/ 15 февраля 2010

Вы можете использовать плагин hoverIntent , позволяющий определить некоторые переменные, которые помогают при взаимодействии мышью с входом / выходом

...