2014-02-11 17 views
-1

jQuery.click()方法可以使用even.target來獲取已觸發事件的元素的類。我想檢查被點擊的元素或其父元素之一是否具有某個特定的類。檢查傳播中的某個元素是否具有特定的類,在jquery.click()方法

<div class="c1"><a href="#" class="c2">Click</a></div> 
<script> 

$(document).click(function(e){ 
    if($(e.target).hasClass("c1")) 
     alert("It's C1"); 
}); 

</script> 

但它總是失敗,因爲c2已被點擊。儘管使用.parent(),我想知道是否有方法檢查點擊事件傳播。

+1

你爲什麼不只是檢測的點擊次數超過C2如果這就是你感興趣? – Alvaro

+0

你的代碼工程:http://jsfiddle.net/eD2B3/ – Paulpro

+0

@Paulpro對不起,這只是一個錯誤。我編輯了這個問題 – Omid

回答

4

的父母從你說的是C1被點擊了什麼,你要知道,如果

你需要看如果元素是內部的被點擊。

var target = $(e.target); 
if (target.hasClass("c2") || target.find(".c2").length) { 
    alert("C2 is a child"); 
} 

編輯,現在你orginally問是不是你真正想要的東西。現在

如果是父母也很簡單,只要

var target = $(e.target); 
if (target.hasClass("c1") || target.parents(".c1").length) { 
    alert("C1 child was clicked"); 
} 

或伊恩指出

if (target.closest(".c1").length) { 
    alert("C1 child was clicked"); 
} 
+1

'target.find'沒用,因爲'e.target'從來沒有後代元素。 – Paulpro

+0

@Paulpro你讀過嗎,OP說過C1被點擊過,而不是C2,他們想知道它是否有元素C2。可能有些奇怪的CSS讓它進入狀態。 – epascarello

+0

有一個錯誤的帥哥。我剛剛編輯了這個問題。 – Omid

-2

您可以使用$(this).hasClass而不是$(e.target)。此外$(this).parent()會導致目標

相關問題