我有以下HTML:
<div class="Wrapper">
<div class="SomeOtherClass"></div>
<div class="SomeOtherClass"></div>
<div class="MyClass">
<div class="SomeElement" id="test"></div>
<div class="SomeElement"></div>
</div>
<div class="MyClass">
<div class="SomeElement" id="test2"></div>
<div class="SomeElement"></div>
</div>
</div>
我有以下javascript:
$('.Wrapper').find('.SomeElement').each(function () {
if (SomeCondition) {
var TheElement = $(this);
var TheIndexOfParentClass = TheElement... //HERE
return;
}
});
如您所见,我遍历所有SomeElements
并选择一个。现在我想知道父类的索引(这里是“MyClass
”)。例如,如果我选择“test
”,则TheIndexOfParentClass
应为0,如果我选择test2
,则TheIndexOfParentClass
应为1.请注意元素数量SomeOtherClass
的变化可能会有所不同;我不想要父级的实际索引,我希望父级的索引相对于Wrapper
元素的所有子级。我该怎么做?
感谢。
答案 0 :(得分:3)
我想你想要这个:
$('.Wrapper').find('.MyClass').each(function(TheIndexOfParentClass) {
$('.SomeElement', this).each(function(){
if (SomeCondition) {
var TheElement = $(this);
each将迭代索引传递给回调函数,因此通过分解迭代,您可以让jQuery为您计算。
答案 1 :(得分:0)
如果你想坚持你的流程,你也可以通过将类传递给索引方法来实现这一点,
$('.Wrapper').find('.SomeElement').each(function () {
if (SomeCondition) {
var TheElement = $(this);
var TheIndexOfParentClass = TheElement.parent().index('.MyClass'); //HERE
return;
}
});
我们在这里避免的是每个循环加倍。