Событие hover только после 2 секунд
Как сделать ,чтобы свершалось событие hover, только в случае, если мышка держится на элементе 2 секунды, если меньше, то ничего.?
|
$( element ).hover(function () { window.initHandler = setTimeout( handler, 2000 ); var $this = this; function handler() { alert( $this ); // Используем выбранный jQuery-объект внутри другой функции } }, function () { clearTimeout( window.initHandler ); }); |
exec, спасибо, все получилось! )
|
exec,
а если элементов несколько? window.initHandler -то один. |
Тогда надо писать что-то вроде
window.initHandlers = []; $( collection ).each(function ( i ) { $( this ).hover(function () { window.initHandlers[i] = setTimeout( handler, 2000 ); var $this = this; function handler() { alert( $this ); // Используем выбранный jQuery-объект внутри другой функции } }, function () { clearTimeout( window.initHandlers[i] ); }); }); Хотя и первый вариант сработает, если элементы не вложены друг в друга. |
Кстати, если нужна какая-то тривиальная вещь, наподобие меню, вполне можно использовать
.delay() $("#menu li").hover( function(){ $("ul", this).delay(2000).slideDown(); }, function(){ $("ul", this).stop(true, true).slideUp(); } ) |
delay, вроде вызовет действие в любом случае, просто через промежуток времени. я не прав? Просто нет сейчас возможности проверить, извиняюсь..
|
Да, но
.stop() очищает очередь анимации, поэтому действия при уведении курсора не происходит.Это не универсальный подход, но для, например, выпадающих меню подходит хорошо. |
Часовой пояс GMT +3, время: 00:39. |