1

我有这样的结构:

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

所以在我的内部someFunction(),我如何遍历所有div已经onclick实现的 s?

我想到了以下几点:

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

但不知何故,我完全确定这是错误的。因为做parent()两次可能会将我带到最顶层的父级,但之后遍历每个孩子实际上不会遍历所有的divs onclick,而是遍历它div上面的 s 层。如果我再做children()一次each(),我不认为它会做我想做的事。请指导。

4

4 回答 4

5

你为什么不给所有的 div 分配一个类并实现了 onclick 方法呢?

所以你会做这样的事情

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

您可以通过将parents()链接到eq()来匹配祖父元素,然后使用带有Has Attribute选择器的find()来匹配您感兴趣的元素:<div>

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

如果要排除 current <div>,可以使用not()

$(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 回答