这可能很容易,但我无法让它发挥作用。我正在使用.each()迭代列表。我想知道是否可以使用索引删除一个类。
例如。如果列表中有10个项目,我想在单击第8个元素时从第5个元素中删除该类。
$(function () {
var items = $('#v-nav>ul>li').each(function (index) {
$(this).click(function () {
if (index = 8)
{
$(#5).removeClass('class');
}
});
});
任何有想法的人?谢谢
答案 0 :(得分:6)
更改
$(#5).removeClass('class');
要
$('#v-nav>ul>li:eq(4)').removeClass('class');
最好分配选择器返回的元素再次执行相同的处理以获得所需的元素。
$(function () {
var items = $('#v-nav>ul>li')
$('#v-nav>ul>li').click(function () {
if ($(this).index() = 8)
{
$(items).eq(4).removeClass('class');
}
});
});
答案 1 :(得分:1)
没有必要使用each()
进行迭代,因为每个元素已经有一个索引,并且使用eq()
将允许您根据它们在DOM中的索引选择元素。此解决方案取决于兄弟姐妹()等元素。
$(function () {
var elems = $('#v-nav>ul>li');
elems.on('click', function() {
if ($(this).index()==8) elems.eq(4).removeClass('class');
});
});
您也可以将点击绑定到该元素:
$(function () {
$('#v-nav>ul>li:eq(7)').on('click', function() {
$(this).siblings().filter(':eq(4)').removeClass('class');
});
});
否则我会这样做:
$(function () {
var elems = $('#v-nav>ul>li');
$.each(elems, function(idx, elm) {
if (idx==8) elems.eq(4).removeClass('class');
});
});
由于旁注ID仅包含一个数字(或以数字开头),因此无效。
答案 2 :(得分:0)
实际上你不需要遍历所有li
元素,而是可以这样做
$(function(){
$('#v-nav>ul>li').eq(7).on('click', function(){ // eq(7) is 8th li
$(this).closest('ul').find('li').eq(4).removeClass('cls'); //eq(4) is 5th li
});
});