【问题标题】:Mutually exclusive jquery click events [duplicate]互斥的jquery点击事件[重复]
【发布时间】:2013-06-16 18:08:18
【问题描述】:

这里我有两个点击事件:

$(document).ready(function() {

    //MESSAGES CHECKBOX
    $(document).on("click",".messages_checkbox",function () {
        alert("clicked box");
    });

    //MESSAGES ROW
    $(document).on("click",".messages_row",function () {
        alert("clicked");
    });

});

这里是html:

<tr class="messages_row">";
<td><input type="checkbox" class="messages_checkbox" value="1"></td>
</tr>

如您所见,一个对象在另一个对象内部。我想做的是在单击复选框或单击容器本身时触发互斥事件(一个或另一个 - 从不两者)。

现在,如果我单击复选框,两个事件都会一个接一个地触发。我只想触发复选框事件。

我该怎么做?

【问题讨论】:

    标签: jquery


    【解决方案1】:
    $(document).on("click",".messages_checkbox",function () {
        alert("clicked box");
    
        // Stops the bubbling
        return false;
    });
    
    //MESSAGES ROW
    $(document).on("click",".messages_row",function () {
        alert("clicked");
    
        // Stops the bubbling        
        return false;
    });
    

    请务必阅读this answer

    【讨论】:

    • 哦,这样也能提高性能?
    • 现在这对委托事件也有效吗?
    • @FelixKling,什么时候没有?
    • @AmyNeville,我会说是一个微优化,但是是的。当使用 mousemove 事件时,它会明显更好,因为它可能是一个真正的瓶颈。
    • 刚刚测试过,它似乎工作。但情况并非总是如此:stackoverflow.com/q/7448860/218196。或者,当您没有委托父事件处理程序时,这可能是/只是一个问题。
    猜你喜欢
    • 2010-10-03
    • 2016-07-04
    • 2017-08-04
    • 2013-06-18
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多