jQuery事件优先级

时间:2014-08-11 01:06:46

标签: javascript jquery

我有一个绑定多个事件处理程序的元素:

<div id="info">
    <button class="action-delete" type="button">Delete</button>
</div>


$("#info").on("click", ".action-delete", function() {
    $.event.trigger({
        type: "application",
        message: {
            name: "item-delete",
            item: $("#info").data("item")
        }
    });
});

然后我希望用户在删除操作完成之前确保,因为action-delete有很多元素适用于不同的模型,所以我尝试将以下脚本注入页面(来自另一个js)文件):

$(document).on("click", ".action-delete", function(e) {
    return confirm("Sure to delete?");
})

但是我发现事件显示确认窗口,delete操作仍然在用户选择之前完成。

有什么想法来解决它吗?

1 个答案:

答案 0 :(得分:1)

问题在于您的确认电话:

$(document).on("click", ".action-delete", function(e) {
    return confirm("Sure to delete?");
})

它应该是这样的:

$(document).on("click", ".action-delete", function(e) {
    e.preventDefault(); //prevent default behavior
    var conf = confirm("Sure to delete?");
    if(conf == true){
      $("#info").trigger( "click" ); //trigger click event for delete
    }
});

另外,我建议从父div中删除click事件。而是创建一个删除功能,让确认对话框(&#39;是&#39;)触发该功能。