2014-04-30 120 views
0

我想通過委託搭乘事件 我在表格行中添加委託。 我也有一個按鈕在行的單元格之一。 現在當我點擊按鈕的時候點擊事件觸發,但是點擊事件也觸發了 點擊按鈕時我不想點擊點擊觸發。 [我的查詢鏈接] [1]Jquery事件覆蓋

$(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

首先,delegate,取而代之的on被廢棄。其次,你需要停止事件的傳播。試試這個:

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

Updated fiddle

+0

行單擊事件現在不燒 我也想排點擊事件,火災,當按鈕被按下不 – Swapy

+0

@Swapy不要忘記你需要在使用時交換參數的順序,它是'on(event,selector,handler);'。我用一個完整的例子更新了我的小提琴。 –

0

這是因爲事件冒泡的發生。爲了防止這種情況發生,您必須在點擊按鈕時使用evt.stopPropagation()

所以你的第二個事件處理程序應該是這樣的

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