这是我的两个函数,单击一下就可以正常工作,但是在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代码。

09-10 05:11