【问题标题】:jQuery set a class to all divs except nth-childjQuery 为除 nth-child 之外的所有 div 设置一个类
【发布时间】:2013-01-04 01:11:55
【问题描述】:

当在选择列表中选择第一个元素时,我试图隐藏除第一个类之外的所有 div。我认为第 4 行会覆盖第 3 行,但它似乎没有以这种方式工作。

function myFunction() {
  if (jQuery('#select').val() == '1') {
    jQuery('.mydiv').addClass('hide');
    jQuery('.mydiv(1)').removeClass('hide');
  }
}

更新 - 各种 div.mydiv 可能已经具有隐藏类,因此代码需要确保只有第一个实例具有该类。如果其他 div 有该类,则需要将其删除。

【问题讨论】:

标签: jquery


【解决方案1】:

您可以使用:not() 选择器

$(".mydiv:not(:nth-child(1))").addClass('hide');

【讨论】:

    【解决方案2】:

    只排除第 n 个孩子

    jQuery( '.mydiv' ).not( ':eq(1)' ).addClass( 'hide' );
    

    【讨论】:

      【解决方案3】:

      将其添加到所有,过滤到第一个,然后删除该类。

      function myFunction() {
        if (jQuery('#select').val() == '1') {
          jQuery('.mydiv').addClass('hide').first().removeClass("hide");
        }
      }
      

      【讨论】:

      • 是的,我将删除我的 cmets,因为它们现在与问题无关,而您的答案已经改变 :)
      • 我不推荐这个解决方案,它只允许你跳过第一个元素
      • @bukfixart 我同意,但就问题中代码的意图而言,没有进一步的说明,更多的都是猜测。 .first() 将与 .filter(":eq(0)") 相同,然后如果您想选择不是第一个的特定元素,请递增 0。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多