我有code:
<div class="fascia">
<div class="navigator">
<div class="item">Item 0</div>
<div class="sibling">sibling</div>
<div class="item">Item 1</div>
<div class="sibling">sibling</div>
<div class="item">Item 2</div>
</div>
<div class="navigator">
<div class="item">Item 3</div>
<div class="sibling">sibling</div>
<div class="item">Item 4</div>
<div class="sibling">sibling</div>
<div class="item">Item 5</div>
</div>
</div>
var navigators = $('.fascia .navigator');
navigators.find('.item').hover(
function () {
var elem = $(this);
var index = elem.index(".item");
navigators.find(".item:eq(" + index + ")").addClass("hover");
}, function () {
}
);
但是当我悬停第4项时,我需要获得索引1,而不是4.因此,由于当前父项的子项而不是&#34;所有&#34;得到索引。在dom的孩子们。当然我想保留navigators
变量,因此悬停处理程序对所有元素都是唯一的。
答案 0 :(得分:4)
只需使用index()
而不使用任何参数:
var navigators = $('.fascia .navigator');
navigators.find('.item').hover(
function () {
var elem = $(this);
var index = elem.index();
console.log(index);
}, function () {
}
);
来自doc:
如果没有参数传递给.index()方法,则返回值是一个整数,表示jQuery对象中第一个元素相对于其兄弟元素的位置。
根据您更新的问题:
您可以这样使用:
var index = $(this).parent().children('.item').index(this);
这里我们首先抓取父元素并选择其子类,只需要对其进行索引,并使用索引(this)来获取索引。
感谢@ArunPJohny。