首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jQuery-Javascript setTimeout-clearTimeout不工作

jQuery-Javascript setTimeout-clearTimeout不工作
EN

Stack Overflow用户
提问于 2011-11-02 19:51:35
回答 5查看 2.1K关注 0票数 1

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

我看到clearTimeout不工作了。谁来帮帮我。提前谢谢。

jQuery部分:

代码语言:javascript
复制
       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部分:

代码语言:javascript
复制
  <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>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-02 20:14:30

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

代码语言:javascript
复制
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);
        }
    });
});
票数 2
EN

Stack Overflow用户

发布于 2011-11-02 20:20:56

尝试使用增加延迟http://cherne.net/brian/resources/jquery.hoverIntent.html的悬停意图

票数 1
EN

Stack Overflow用户

发布于 2011-11-02 20:05:10

您需要在HTML中的某个位置包含id ='aaa‘的div

代码语言:javascript
复制
<div id='aaa'><!--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-->

在这里查看jsfiddle http://jsfiddle.net/vR5hJ/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7979840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档