我正在使用jQuery
開發網頁。在此網頁中,有一個div標籤,其中包含p
和button
標籤。如何阻止jQuery中父元素的點擊事件?
的HTML
碼是這樣的:
<div class="container">
<div id="attribute" style="border:solid;border-width:2px;border-color:#ccc">
<p id="cell-content" style="display:inline">Id</p>
<button id="remark-view" class="btn btn-primary">Detail</button>
</div>
</div>
和相應JavaScript
碼是這樣的:
$(document).ready(function(){
$("#attribute").on('click', function(){
console.log("click on the div attribute");
});
$("#attribute").on('dblclick', function(){
console.log("double click on the div attribute");
});
$("#remark-view").on('click', function(){
console.log("click on the button remark-view");
});
});
作爲代碼所示,一個外div有AP和按鈕子元素,和外部div元素偵聽單擊和雙擊事件,而內部按鈕元素偵聽單擊事件。
當我在瀏覽器中運行代碼並單擊按鈕時,控制檯顯示調用外部div和內部按鈕元素的兩個單擊函數,這違背了我的目的:只有內部按鈕的click功能應該被稱爲在這種情況下。因此,有沒有辦法阻止父元素(在這種情況下,外部div元素)的click事件。換句話說,是否有任何方法可以在子元素處理它之後停止將父事件傳遞給父元素?
預先感謝您!
答案適用於我的情況,但我認爲當頁面中的點擊監聽器數量增加時,可能會遇到麻煩。傳單提出的方法可能會更好? – pageajpeng
我不明白'attribute.has(x.target).length === 0'的意思。你能解釋它的功能嗎? – pageajpeng
這是爲了檢查容器是否裝滿或我的情況下,我不認爲這將需要你。同意你的更好的答案,但只是作爲一個選項發佈。 – Sand