Jquery 如何为每组孩子附加处理程序?

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

假设我有以下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>
</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++;
});