使用索引删除类

时间:2012-11-30 16:06:20

标签: javascript jquery

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

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

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

任何有想法的人?谢谢

3 个答案:

答案 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
  });
});

DEMO