这是我的代码:
$(".pc2").hover(function(){
$('#pc1').show();
$('#pc1a').show(800);
},
function(){
$('#pc1').hide();
setTimeout(function(){$('#pc1a').hide();}, 5000);
$('#pc1a').mouseenter(function(){
clearTimeout(function(){$('#pc1a').show();});
});
$('#pc1a').mouseleave(function(){
$('#pc1a').hide(800);
});
});
我想要的是,一旦用户浮动鼠标进入div,$('pc1a')div保持不变(这样就不会调用setTimeout(hide()))。似乎使用stop()可以轻松解决问题; ,clearTimeout();或clearQueue();但是我不确定如何根据我的情况正确调用这些方法。您能给我建议并帮助我找到解决方案吗?
先感谢您
最佳答案
clearTimeout
接受以前的计时器句柄,而不是函数。保存setTimeout
的返回值,然后在以后使用该值取消它。
例如:
$(".pc2").hover(
function () {
$('#pc1').show();
$('#pc1a').show(800);
},
function () {
var timer;
$('#pc1').hide();
timer = setTimeout(function () { // <== Save it
$('#pc1a').hide();
}, 5000);
$('#pc1a').mouseenter(function () {
clearTimeout(timer); // <== Cancel it
});
$('#pc1a').mouseleave(function () {
$('#pc1a').hide(800);
});
}
);