用简单的英语来说,当将鼠标悬停在元素上时,此代码就会启动。当它悬停在上面时,我添加一个类并显示该元素,然后 5 秒后,我反转所有内容:即淡出之前显示的内容并删除之前添加的类。
$("#it").addClass('somestyle').show();
setTimeout(function(){
$("#it").fadeOut("normal", function(){ $(this).removeClass('somestyle'); });
}, 5000);
- 我的代码干净还是有问题?
- 如果 I 元素在 5 延迟秒内再次悬停在上方,如何取消这些延迟操作(淡出和类删除)。如果它再次悬停,我不希望计划中的延迟操作真正发生。
最佳答案
声明退出函数
var timer;
然后在函数内部:
$("#it").addClass('somestyle').show();
clearTimeout(timer);
timer=setTimeout(function(){
$("#it").fadeOut("normal", function(){ $(this).removeClass('somestyle'); });
}, 5000);
使用此代码首先清除超时,然后再次设置它,因此触发此函数时它将再次等待。
关于jquery 如果发生某些事情,取消延迟(setTimeout)事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1613802/