javascript - jQuery-Javascript setTimeout-clearTimeout 不工作

标签 javascript jquery settimeout

在下面的代码片段中,只有当我连续停留在 div 一段时间后,我才想调用 change() 函数。如果我只是浏览 div,我想取消对该函数的调用 - 使用 clearTimeout

我看到 clearTimeout 不工作。有人请帮助我。提前致谢。

jQuery 部分:

       var obj=$('#aaa');

        var tt;
        obj.find('div').bind({
            mouseenter:function(e){
                var that = $(this)
                tt = setTimeout(function(){
                                    change(e,that)
                                },1000) // <-- time to wait before execution
            },
            mouseleave:function(e){
                clearTimeout(tt);
            }
        });

      function change(e,that){
        console.log(e)
        console.log(that)
      }

HTML 部分:

  <div id='aaa'>
    <div><!--class a start-->
        <div>lkaiseulaweg</div>
        <div><!--class b start-->
            <div>ae</div>
            <div>dd</div>
        </div><!--class b end-->
    </div><!--class a end-->

    <div><!--class a start-->
        <i>numbers</i>
        <div><!--class b start-->
            <div>986</div>
            <div>345</div>
            <div>000</div>
            <div>999</div>
        </div><!--class b end-->

    </div><!--class a end-->
  </div>

最佳答案

每个 div 都需要一个额外的闭包,以便 tt 变量是唯一的。使用 .each 绑定(bind)事件监听器,有效地为每个 tt 变量创建一个新的闭包:

obj.find('div').each(function(){
    var tt;
    var that = $(this)
        that.bind({
        mouseenter:function(e){
            clearTimeout(tt); // In case something weird happens
            tt = setTimeout(function(){
                                change(e,that)
                            },1000) // <-- time to wait before execution
        },
        mouseleave:function(e){
            clearTimeout(tt);
        }
    });
});

关于javascript - jQuery-Javascript setTimeout-clearTimeout 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7979840/

相关文章:

javascript - 克隆日期选择器

javascript - 鼠标点击不会触发 Crafty.js 事件

JavaScript setTimeOut 函数不起作用

javascript - 为什么 settimeout(function(), 0 ) 和 function() 之间的执行时间不同?

javascript - 在剑道网格中,我可以使用函数动态设置列属性吗?

javascript - 使用 JQuery 方法查找类。在 Rails 应用程序中使用 JavaScript 文件

javascript - 如何创建一个 javascript rusable 类来将参数传递给 ajax

jquery - 帮助 jquery 中的克隆和appendTo

javascript - 单击品牌时 Bootstrap 导航栏不会设置事件页面

javascript - 使用 JS 控制台删除推文