这是我的两个函数,单击一下就可以正常工作,但是在dblclick上两个函数都执行,有什么想法吗?我尝试使用live
而不是delegate
,但是两个函数仍然在dblclick上执行
// Change Status on click
$(".todoBox").delegate("li", "click", function() {
var id = $(this).attr("id");
$.ajax({
//ajax stuff
});
return false;
});
// Double Click to Delete
$(".todoBox").delegate("li", "dblclick", function(){
var id = $(this).attr("id");
$.ajax({
//ajax stuff
});
return false;
});
最佳答案
从API文档中:
将处理程序绑定到同一元素的click和dblclick事件都是不可取的。触发事件的顺序因浏览器而异,其中一些事件接收两个单击事件,另一些事件仅接收一个。如果无法避免对单击和双击的反应不同的接口,则应在单击处理程序中模拟dblclick事件。我们可以通过在处理程序中保存时间戳,然后将当前时间与后续点击中保存的时间戳进行比较来实现此目的。如果差异足够小,我们可以将点击视为双击。
我认为这意味着您将在超时处理程序中执行click
操作。如果再次单击,并且超时处理程序尚未发生,请取消超时并执行dblclick
代码。