假设我有这个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>
好吧,在child
链接上,我想计算该组的大小。但是,如果我点击第一组的链接,它必须是3,而不是4。
所以我需要为每个组附加一个处理程序。试过:
$('.parent .child').size();
但计数总是4.我该怎么办?
另外,请注意,对于单个链接,没有父母:
<a href="javascript:void(0);" class="child">Link</a>
它必须也可以。(大小为1,如果它不在任何“父”组内)
这样做的最好方法是什么?
答案 0 :(得分:3)
不是很优雅,但它应该完成工作。
$('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
的
编辑:上面是写的答案的解决方案。以下是作者在评论中描述的用例的更新版本
$('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++;
});
答案 1 :(得分:0)
试试这个
<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();