1

私はこのような構造を持っています:

<div>
     <div> 
         <div onclick="someFunction(this)"></div>
     </div>
     <div> 
         <div onclick="someFunction(this)"></div>
     </div>
     ..
     ..
</div>

それで、私の中で、それらに実装されているsomeFunction()すべてのをどのように繰り返すのですか?divonclick

私は次のことを考えました:

$(this).parent().parent().children().each( function () { } );

しかし、どういうわけか私はそれが間違っていると完全に確信しています。2回実行parent()すると最上位の親に移動する可能性がありますが、その後、各子を反復処理しても、実際には子をdiv持つすべてのsが反復処理されるのonclickではなく、そのdiv1つ上のレベルが反復処理されます。そして、私がchildren()もう一度やった後、やったらeach()、私はそれが私が望むことをするだろうとは思わない。ご案内ください。

4

4 に答える 4

5

そのonclickメソッドが実装されているすべてのdivにクラスを割り当ててみませんか?

だからあなたはこのようなことをするでしょう

html

<div>
     <div> 
         <div class="someDiv"></div>
     </div>
     <div> 
         <div class="someDiv"></div>
     </div>
     ..
     ..
</div>

脚本

$(".someDiv").each(function(){
    somefunction(this);
});
于 2013-02-13T13:59:11.317 に答える
1

親()eq()にチェーンすることで祖父の要素を照合し、次に、Has Attributeセレクターでfind()を使用して、関心のある要素を照合できます。<div>

$(this).parents().eq(1).find("div[onclick]").each(function() {
    // ...
});

現在のを除外したい場合は、 not()<div>を使用できます:

$(this).parents().eq(1).find("div[onclick]").not(this).each(function() {
    // ...
});
于 2013-02-13T14:01:43.940 に答える
0

あなたはそのようにそれを行うことができます:

$('div[onclick*=someFunction]')
于 2013-02-13T14:00:28.897 に答える
0

クラスを追加して、必要なすべての要素を簡単に選択します。

<div>
     <div> 
         <div class="myClass"></div>
     </div>
     <div> 
         <div class="myClass"></div>
     </div>
     ..
     ..
</div>

$(document).ready(function(){
    //All your elements which have a class myClass
    $elements = $('.myClass');

    $.each($elements,function(){
        //Here you are going through all your elements
    });

    $('.myClass').click(function(){
        //Here you are executing your function
        someFunction(this);
    });
});
于 2013-02-13T14:01:23.850 に答える