我正在使用jQuery编写事件处理程序,并且对点击和双击事件有疑问。我有一个带有“文件”类的元素。它附有两个事件处理程序,一个用于单击元素,另一个用于双击。我希望两者都能独立于另一个激发,但是当双击事件发生时,似乎总会触发click事件。
$('.file').live('dblclick', function(//event handler code){});
$('.file').live('click', function(//event handler code){});
当用户双击附加了事件的项目时,应该触发双击事件,这是正常的。但是,似乎任何单击事件都会被触发。在jQuery中,如果双击事件触发,这是否意味着单击事件始终已在同一元素上触发?
答案 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');
});