1

私がこの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; }
});
4

3 に答える 3

6
$(this).parents("#Ancestor").length > 0

親クラスが静的であり、時間の経過とともに移動しない場合は、ネストされたdivと祖先にのみリスナーをアタッチすることをお勧めします。

$("#Ancestor .deepchild").click(...
于 2012-05-18T21:56:10.120 に答える
3

これは古い質問であり、すでに受け入れられた答えがありますが、最良の選択肢はまだ与えられていないと思います。

$(this).parents( "#Ancestor")。length> 0複雑なDOM構造の場合、非常に遅くなる可能性があります。

if ($('#Ancestor').find(this).length)
    //I'm under the  #Ancestor.

私の道を示すjsperfは3倍速いです!

于 2012-05-31T06:43:14.827 に答える
0

このようなものはどうですか

$(this).parents("#Ancestor").length > 0
于 2012-05-18T21:57:03.523 に答える