2013-01-23 250 views
5

最近我遇到了一些jQuery問題。讓我們只說我有內容是這樣的:jQuery防止觸發子事件時父級事件觸發

<div id="parent1" class="parent"> 
    <div id="child1" class="children"> 
     <a href="" id="child_link1" class="child_link"></a> 
    </div> 
</div> 

,我有jQuery的功能是這樣的:

$(".parent").click(function(){ 
    alert("parent is clicked"); 
}); 

$(".child_link").click(function(){ 
    alert("child link is clicked"); 
}); 

如果我點擊child_link,父母也將被觸發。我如何創建一個情況,如果我點擊child_link,父母不會被觸發?

回答

9

你需要停止對孩子點擊事件傳播,如:

$(".child_link").click(function(e) { 
    e.stopPropagation(); 
    alert("child link is clicked"); 
}); 

Example fiddle

+0

感謝您的答覆,我嘗試使用stopPropagation但遺憾的是,並沒有引發連child_link事件。它只返回到首頁無所事事。 –

+0

您是否記得將事件傳遞給函數? '.click(function(e){'< - there –

4

爲孩子的事件處理函數應該這樣寫這樣:

$(".child_link").click(function(event){ 
    event.stopPropagation(); 
    alert("child link is clicked"); 
}); 

這將停止event bubbling,父母的事件處理程序將不會被調用。

+0

感謝您的回覆,我嘗試過使用stopPropagation,但不幸的是,即使child_link事件沒有被觸發,它只返回首頁無所作爲。 –

4

看到您的活動正在冒泡到其父母。所以在這裏,你必須使用.stopPropagation();

$(".child_link").click(function(ev){ 
    ev.stopPropagation(); //<----------------this stops the event to bubble up 
    alert("child link is clicked"); 
}); 
+0

原因downvote?plz share。 – Jai

+1

我不知道是誰投了票,我投了票給你補償:) –

+1

你也值得。:) – Jai