2012-04-16 201 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 
     } 
});