2

这可能很容易,但我无法让它工作。我正在使用 .each() 遍历列表。我想知道是否可以使用索引删除一个类。

例如。例如,如果列表中有 10 个项目,并且我想在单击第 8 个元素时从第 5 个元素中删除该类。

$(function () {
var items = $('#v-nav>ul>li').each(function (index) {
    $(this).click(function () {
        if (index = 8)
{
$(#5).removeClass('class');
}
    });
});

有任何想法的人吗?谢谢

4

3 回答 3

7

改变

$(#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');
          }
       });
});
于 2012-11-30T16:07:17.957 回答
1

没有必要迭代 with each(),因为每个元素都已经有一个索引,并且 usingeq()可以让你根据它们在 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 是无效的。

于 2012-11-30T16:08:39.333 回答
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
  });
});

演示

于 2012-11-30T16:30:55.180 回答