Jquery事件覆盖

时间:2014-04-30 10:15:05

标签: jquery

我想通过代表过度参加活动 我在表行添加委托。 我在行的一个单元格中也有一个按钮。 现在,当我单击按钮时,按钮单击事件将触发,但行单击事件也会触发 单击按钮时,我不希望行点击。 [链接查询] [1]

$(function(){
    $("body").delegate("table tr","click",function(evt){
        alert("row clicked");
    });

    $("body").delegate("table tr input[type=button]","click",function(evt){
        alert("button clicked");
    });
});

http://jsfiddle.net/jjMVU/

2 个答案:

答案 0 :(得分:2)

首先,delegate已被弃用,而不是on。其次,您需要停止传播事件。试试这个:

$("body").on('click', "table tr input[type=button]", function(evt){ 
    evt.stopPropagation();
    alert("button clicked");
});

Updated fiddle

答案 1 :(得分:0)

这是因为事件冒泡而发生的。为了防止这种情况发生,您必须在按钮点击中使用evt.stopPropagation()

所以你的第二个事件处理程序应该是这样的

$("body").delegate("table tr input[type=button]","click",function(evt){
    evt.stopPropagation();
   alert("button clicked");
});