jquery 如果发生某些事情,取消延迟(setTimeout)事件

标签 jquery

用简单的英语来说,当将鼠标悬停在元素上时,此代码就会启动。当它悬停在上面时,我添加一个类并显示该元素,然后 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/

相关文章:

jquery - 我如何格式化(主要是更改大小)表单中的下拉菜单(选择)?

javascript - 如何在 jquery 中创建一个 "reusable"函数?

javascript - 使用 jquery 创建时数据库生成的列表不起作用

javascript - jQuery promise (当 > 然后)不使用 $.each 和 $.ajax 迭代数组

javascript - 如何通过 jquery 倒计时按天数创建计数器

javascript - 产品标签在 Shopify 商店中不起作用

javascript - 跨域上传图片

javascript - 如何用一组数组制作文本轮播

javascript - 如何在php中获取ajax下拉列表的值?

php - 第一个 jquery/ajax 测试不工作