我有这样的结构:
<div>
<div>
<div onclick="someFunction(this)"></div>
</div>
<div>
<div onclick="someFunction(this)"></div>
</div>
..
..
</div>
因此,在我的someFunction()
内,如何遍历已在其上实施div
的所有onclick
?
我想到了以下几点:
$(this).parent().parent().children().each( function () { } );
但不知怎的,我完全确定这是错的。因为两次执行parent()
可能会将我带到最顶层的父级,但之后迭代通过每个子级实际上不会遍历所有div
上的onclick
,而是它将遍历div
上面的一个级别。如果我再次children()
再做each()
,我认为它不会做我想要的。
请指导。
答案 0 :(得分:5)
为什么不直接用实现的onclick方法为所有div分配一个类?
所以你会做这样的事情
HTML
<div>
<div>
<div class="someDiv"></div>
</div>
<div>
<div class="someDiv"></div>
</div>
..
..
</div>
脚本
$(".someDiv").each(function(){
somefunction(this);
});
答案 1 :(得分:1)
您可以通过将parents()链接到eq()来匹配祖父元素,然后将find()与Has Attribute选择器匹配,以匹配您<div>
元素感兴趣的是:
$(this).parents().eq(1).find("div[onclick]").each(function() {
// ...
});
如果您要排除当前<div>
,可以使用not():
$(this).parents().eq(1).find("div[onclick]").not(this).each(function() {
// ...
});
答案 2 :(得分:0)
$('div[onclick*=someFunction]')
答案 3 :(得分: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);
});
});