首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clearTimeout不工作

clearTimeout不工作
EN

Stack Overflow用户
提问于 2011-07-01 22:29:29
回答 1查看 465关注 0票数 3

SetTimeout对以下代码不起作用:

代码语言:javascript
复制
   $("#clkDblClk").click(function(){           
       var clickTimer=setTimeout(function(){
            //Some code to execute
          },1000); 
        $(this).data("clickTimer",clickTimer);
     });
     $("#clkDblClk").dblclick(function(){
       var clickTimer=$(this).data("clickTimer");
       clearTimeout(clickTimer);
       //Some ajaxRequest
     });

在doubleclick上为click和doubleclick上的cancel out click事件注册元素,注册setTimeout函数。我在双击方法中获得Ineger计时器id,但clearTimeout没有取消要执行的函数。我不明白这个错误。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-01 22:32:40

没有办法区分单击和双击,所以每次双击也会触发两个单独的单击事件。每个单击事件也会启动setTimeout,但它会覆盖.data('clickTimer')值。

这就是证据:http://jsfiddle.net/mattball/Az6zY/

一种解决方案是解除click事件。非常简单的实现:

代码语言:javascript
复制
var DATA_KEY = 'clickTimer';

$('#clkDblClk').click(function()
{
    var $this = $(this);

    if ($this.data(DATA_KEY)) return;

    var clickTimer = setTimeout(function()
    {
        // do other stuff

        $this.removeData(DATA_KEY);
    }, 1000);

    $this.data(DATA_KEY, clickTimer);
})
.dblclick(function()
{
    var $this = $(this);

    var clickTimer = $this.data(DATA_KEY);
    clearTimeout(clickTimer);

    $this.removeData(DATA_KEY);
});

演示:http://jsfiddle.net/mattball/B5MSw/

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

https://stackoverflow.com/questions/6549298

复制
相关文章

相似问题

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