2012-04-16 163 views
1

如果點擊元素不是某個特定DIV元素的子元素,我該如何檢查?檢查元素是否爲給定元素的父元素

$("body").click(function(e) { 
    if(e NOT child of $('#someDiv')) alert(1); 
}); 
+0

你是指孩子還是後代? – 2012-04-16 13:35:23

回答

6
if ($(e.target).parent('#someDiv').length == 0) { 
    ... 
} 

或者,您的意思是否(「電子商務不是一個祖先」):

if ($(e.target).closest('#someDiv').length == 0) { 
+0

thaaank,它的工作...現在=)ty rly – Clem 2012-04-16 12:56:51

+0

'.closest()'從元素本身開始,如果它發現了什麼就停止。如果任何機會選擇器匹配的孩子(如說使用類),它會返回自己。 '.parents()'會更安全。 – Joseph 2012-04-16 12:58:42

+2

@約瑟夫很好的發現。然後使用'.parent()。closest('#someDiv')'。 – 2012-04-16 13:01:21

1

您可以使用parent方法與選擇返回父元素,如果它匹配選擇。然後,您可以檢查length屬性,查看是否返回父元素:

$("body").click(function(e) { 
    if(!$(this).parent("#someDiv").length) { 
     alert("Not a child"); 
    } 
}); 

如果你想檢查點擊的元素是不是祖先,您可以用parents而不是parent

1
$('yourElement').on('click',function(){ 
     if(!$(this).parents('theDiv').length){ 
      //not a child 
     } 
});