单击并双击事件触发

时间:2011-12-21 21:41:12

标签: jquery events

我正在使用jQuery编写事件处理程序,并且对点击和双击事件有疑问。我有一个带有“文件”类的元素。它附有两个事件处理程序,一个用于单击元素,另一个用于双击。我希望两者都能独立于另一个激发,但是当双击事件发生时,似乎总会触发click事件。

$('.file').live('dblclick', function(//event handler code){});
$('.file').live('click', function(//event handler code){});

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

3 个答案:

答案 0 :(得分:4)

正如詹姆斯在评论中提到的那样,没有另一个就没有。这将是一个黑客攻击,但你可以通过计时器独立完成这些工作:

$('.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?

});

答案 1 :(得分:0)

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

答案 2 :(得分:-2)

不要相信第一个答案,那真是太糟糕了。 请改用:

$('.file').on('click', function()
{
    $(this).css('background', 'blue');
});

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

http://jsfiddle.net/H42KV/