2012-05-11 135 views
8

我將如何停止onclick內部元素也通過點擊其父元素。jquery onclick滲透到父元素

<div id="1" onclick="alert('1')"> 
<div id="2" onclick="alert('2')"></div> 
</div> 

如果第二個div(ID =「2」)明顯是在第一的頂部,它被點擊,您將獲得這兩個警報1 & 2.

我怎樣才能避免這種情況使我只從我的(可見)點擊中獲得警報, 沒有完全禁用外部div可能擁有的任何onclick函數。

例子:http://jsfiddle.net/DPCx8/

回答

7
​var outer = document.getElementById('outer'); 
outer.onclick = function(event) 
    { 
     alert('outer'); 
     event.stopPropagation(); 
    }​​ 
    var inner = document.getElementById('inner'); 
inner.onclick = function(event) 
    { 
     alert('inner'); 
     event.stopPropagation(); 
    } 
感謝

http://jsfiddle.net/DYykA/1/

+0

謝謝!這工作完美。我在應用'stopPropagation()'時遇到了麻煩,所以這有幫助! –

6

您需要stop the propagation處子,所以該事件不會冒泡到父。

$("#inner").on("click", function(e){ 
    e.stopPropagation(); 
}); 
+0

冒泡!我試着把它放在JavaScript中,並且無法使它工作。我在前後放置了'alert',並且仍然收到'outer'警報 –

+0

@iight您將處理程序直接添加到HTML中 - 不這樣做。相反,像上面那樣添加它,通過jQuery使用CSS選擇器。 – Sampson

+0

這就是我所做的。我將它添加爲腳本,而不是其中的元素 –

3

使用event.stopPropogation();防止事件

+0

謝謝!很棒! –