首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击并双击事件触发

单击并双击事件触发
EN

Stack Overflow用户
提问于 2011-12-22 05:41:12
回答 3查看 10.4K关注 0票数 2

我正在使用jQuery编写事件处理程序,并且有一个关于单击和双击事件的问题。我有一个元素,上面有一个类"file“。它附加了两个事件处理程序,一个用于单击元素,另一个用于双击。我希望这两个事件都独立于另一个事件触发,但似乎总是在双击事件触发时触发单击事件。

代码语言:javascript
复制
$('.file').live('dblclick', function(//event handler code){});
$('.file').live('click', function(//event handler code){});

当用户双击附加了事件的项时,应该会触发双击事件,这是正常的。但是,任何单击事件似乎也会触发。在jQuery中,如果双击事件触发,这是否意味着已经在同一元素上触发了单击事件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-22 05:52:54

正如詹姆斯在他的评论中提到的那样,不能没有一个。这可能会有点麻烦,但你可以用一个计时器让它们独立工作:

代码语言:javascript
复制
$('.file').live('dblclick', function() {


  $(this).data('doubleClicked', true);
  //event handler code

});

function SingleClickHandle(this)
{
  if (! $(this).data('doubleClicked'))
  {
  //event handler code
  }
}

$('.file').live('click', function(){

  $(this).data('doubleClicked', false);
  setTimeout('SingleClickHandler(this)', 500); // is half a second enough to consider it a double-click?

});
票数 4
EN

Stack Overflow用户

发布于 2012-01-03 22:43:07

这是jquery的默认行为。您必须使用/执行以下操作:https://gist.github.com/399624

票数 0
EN

Stack Overflow用户

发布于 2013-01-31 18:43:29

不要相信第一个答案,那真的真的很糟糕。改用下面的代码:

代码语言:javascript
复制
$('.file').on('click', function()
{
    $(this).css('background', 'blue');
});

$('.file').on('dblclick', function(event){
    event.preventDefault();
    $(this).css('background', 'green');                               
});

http://jsfiddle.net/H42KV/

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

https://stackoverflow.com/questions/8596756

复制
相关文章

相似问题

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