我正在使用jQuery编写事件处理程序,并且有一个关于单击和双击事件的问题。我有一个元素,上面有一个类"file“。它附加了两个事件处理程序,一个用于单击元素,另一个用于双击。我希望这两个事件都独立于另一个事件触发,但似乎总是在双击事件触发时触发单击事件。
$('.file').live('dblclick', function(//event handler code){});
$('.file').live('click', function(//event handler code){});当用户双击附加了事件的项时,应该会触发双击事件,这是正常的。但是,任何单击事件似乎也会触发。在jQuery中,如果双击事件触发,这是否意味着已经在同一元素上触发了单击事件?
发布于 2011-12-22 05:52:54
正如詹姆斯在他的评论中提到的那样,不能没有一个。这可能会有点麻烦,但你可以用一个计时器让它们独立工作:
$('.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?
});发布于 2012-01-03 22:43:07
这是jquery的默认行为。您必须使用/执行以下操作:https://gist.github.com/399624
发布于 2013-01-31 18:43:29
不要相信第一个答案,那真的真的很糟糕。改用下面的代码:
$('.file').on('click', function()
{
$(this).css('background', 'blue');
});
$('.file').on('dblclick', function(event){
event.preventDefault();
$(this).css('background', 'green');
});http://jsfiddle.net/H42KV/
https://stackoverflow.com/questions/8596756
复制相似问题