Событие 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, время: 06:25. |