Захват событий парить и остаться против прохода мимо - PullRequest
1 голос
/ 06 октября 2011

Есть ли способ захватить наведение мыши и задержать (на некоторое время) событие, но не если мышь проходит мимо элемента.Так что событие будет запущено только тогда, когда вы зависаете и остаетесь.

Ответы [ 5 ]

1 голос
/ 06 октября 2011

Вы можете использовать setTimeout, чтобы создать задержку перед выполнением любого кода, который вам нужен, и clearTimeout, чтобы отменить таймер, когда мышь покидает элемент:

var timer;
$("#example").mouseover(function() {
    timer = setTimeout(function() {
       console.log("time passed");
    }, 1000); 
}).mouseout(function() {
    clearTimeout(timer);  
});

Вот рабочий пример из вышеперечисленного.

0 голосов
/ 06 октября 2011

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

yourElement.live({
    mouseenter: function() {
        t=setTimeout(function(){ yourFunction() }, 500); 
    }, mouseleave: function() {
        clearTimeout(t);
    }
});

Надеюсь, эта помощь:)

0 голосов
/ 06 октября 2011

Изучите использование таймера JavaScript, начните считать, когда наведете курсор мыши. Когда мышь уйдет, остановите таймер. Таймер может инициировать событие, если отключение / отпускание мыши не происходит, таймер отключит функцию зависания / остановки.

Возможно, плагин JQuery для этого тоже.

0 голосов
/ 06 октября 2011

Для этого предназначен плагин hoverIntent .

0 голосов
/ 06 октября 2011

Да, для этого существует плагин.Я использую его почти во всех моих кодах наведения:

...