假设我有这个HTML结构:
<div id="Ancestor">
<div>
<div>
....
<div class="DeepChild"></div>
...
<div id="NotAncestor">
<div>
<div>
....
<div class="DeepChild"></div>
我想知道,当我点击DeepChild div时,如果它是Ancestor的后代。
这样的事情:
$('.DeepChild').click(function () {
if (whichcondition?? === true) { IsFromAncestor = true; }
});
答案 0 :(得分:6)
$(this).parents("#Ancestor").length > 0
如果您的父母类是静态的并且不会随着时间的推移而移动,您可能只想将监听器附加到嵌套在其中的div和祖先:
$("#Ancestor .deepchild").click(...
答案 1 :(得分:3)
这是一个老问题,并且已经接受了答案,但我认为还没有给出最好的选择:
$(this).parents(“#Ancestor”)。length&gt; 0 对于复杂的DOM结构,可能非常慢。
if ($('#Ancestor').find(this).length)
//I'm under the #Ancestor.
jsperf显示我的方式快三倍!
答案 2 :(得分:0)
这样的事情
$(this).parents("#Ancestor").length > 0