我的代碼是:延遲懸停動畫
$(document).ready(function() {
$('.holder').hover(function() {
$(this).find('.heading').slideUp();
},function() {
$(this).find('.heading').slideDown();
});
});
現在我要實現的功能setTimeout
。但問題可能是$(this)
我的代碼是:延遲懸停動畫
$(document).ready(function() {
$('.holder').hover(function() {
$(this).find('.heading').slideUp();
},function() {
$(this).find('.heading').slideDown();
});
});
現在我要實現的功能setTimeout
。但問題可能是$(this)
只儲存$(this)
在變量和使用該變量的匿名函數中:
$(document).ready(function() {
$('.holder').hover(function() {
var $self = $(this);
setTimeout(function(){
$self.find('.heading').slideUp();
}, 500);
},function() {
$(this).find('.heading').slideDown();
});
});
編輯在迴應評論:
$(document).ready(function() {
var timer;
$('.holder').hover(function() {
var $self = $(this);
timer = setTimeout(function(){
timer = false;
$self.find('.heading').slideUp();
}, 2000);
},function() {
if(timer){
clearTimeout(timer);
timer = false;
}else{
$(this).find('.heading').slideDown();
}
});
});
如果我想setTimeout爲.hover()? – user1830414
@ user1830414你是什麼意思?您想要在DOM準備好之後延遲懸停事件處理程序的綁定嗎? – Paulpro
是的,這就是我想要的 – user1830414
如果您想等下滑下來,你可以這樣做:
$(document).ready(function() {
$('.holder').hover(function() {
$(this).find('.heading').slideUp();
},function() {
var me = this;
setTimeout(function() { $(me).find('.heading').slideDown(); }, 1000);
});
});
在給定的,如果鼠標懸停元素穿過多次,該行動將級聯的開啓和關閉的怪胎的所有解決方案。
嘗試在每次懸停時取消超時。例如:
function slideHover()
{
jqHolder = $('.holder');
var time = jqHolder.data('time');
if (time)
{
clearTimeout(time);
}
time = setTimeout(function() {
jqHolder.find('.heading').slideToggle();
}, jqHolder.is(':hidden') ? 0 : 500);
jqHolder.data('time',time);
}
$(document).ready(function() {
$('.holder').hover(slideHover, slideHover);
});
你想延遲些什麼? – twinlakes
slideUp()... – user1830414
如果你只是想延遲幻燈片的功能,jQuery的方法是:http://api.jquery.com/delay/ –