Jquery 如何为每组孩子附加处理程序?
假设我有以下html场景:Jquery 如何为每组孩子附加处理程序?,jquery,handler,Jquery,Handler,假设我有以下html场景: <div class="parent"> <a href="javascript:void(0);" class="child">Link</a> <a href="javascript:void(0);" class="child">Link</a> <a href="javascript:void(0);" class="child">Link</a> &l
<div class="parent">
<a href="javascript:void(0);" class="child">Link</a>
<a href="javascript:void(0);" class="child">Link</a>
<a href="javascript:void(0);" class="child">Link</a>
</div>
<div class="parent">
<a href="javascript:void(0);" class="child">Link</a>
</div>
但计数总是4。我怎么做
另外,请注意,对于没有父链接的单个链接:
<a href="javascript:void(0);" class="child">Link</a>
它也必须工作。(大小为1,如果它不在任何“父”组中也一样)
最好的方法?试试这个
<div class="parent" id='group1'>
<a href="javascript:void(0);" class="child">Link</a>
<a href="javascript:void(0);" class="child">Link</a>
<a href="javascript:void(0);" class="child">Link</a>
</div>
<div class="parent">
<a href="javascript:void(0);" class="child">Link</a>
</div>
$('#group1 .child').size();
$('#group1.child').size();
不是很优雅,但它应该能完成任务
$('a.child').each(function() {
$(this).parent().children('a.child').first().addClass('first');
});
$('a.child.first').parent().each(function() {
alert($(this).children('a.child').size());
});
注意,您将得到1-3-1而不是3-1-1。。我假设这是因为没有父对象的a.child
首先被选择器抓取,因为它在DOM树中比其他a.child
的更高
编辑:以上是书面答案的解决方案。下面是作者在评论中描述的用例的更新版本
嗯,当然行了。我需要为每个元素做一件事,而不是通过ID:)这也是我阅读问题的方式。有一件事——如果它只是他想要的直接子元素,他可能会在某个时候向div中添加更多的东西,如果他再次使用child类,这可能会破坏它。您可以使用children(“a.child”)
仅查找直接的子对象。这也可以修复他添加的额外场景;)<代码>对象[对象对象]没有方法“child”
:OIt似乎可以工作!(有尺寸)。不幸的是,如果我使用.lightBox,计数是不同的!该死…什么是灯箱?您可以使用任何您想要的类来代替child
$('a.child').each(function() {
$(this).parent().children('a.child').first().addClass('first');
});
$('a.child.first').parent().each(function() {
alert($(this).children('a.child').size());
});
$('a.child').each(function() {
$(this).parent().children('a.child').first().addClass('first');
});
var i = 0;
$('a.child.first').removeClass('first').each(function() {
$(this).parent().children('a.child').addClass('colorBoxGroup-' + i);
$('.colorBoxGroup-' + i).colorbox({ rel: 'colorBoxGroup-' + i, transition: "fade", maxWidth: "900px", maxHeight: "600px" });
i++;
});