【问题标题】:jQuery - 2 pseudo selectors? [duplicate]jQuery - 2 个伪选择器? [复制]
【发布时间】:2012-10-16 08:35:59
【问题描述】:

可能重复:
Combining jQuery :not and :nth-child selectors

这可能吗?

这是我的代码:

$("ul#filterlist li:nth-child(3n)").css("marginTop", "0");

如果我想将其应用于列表,但仅应用于列表中可见的那些项目(有些被隐藏,我不希望将它们计算在内),如何实现?我在想这样的事情:

$("ul#filterlist li:nth-child(3n)").not(":hidden").css("marginTop", "0");

但这行不通。我也不会尝试任何东西:可见

有什么想法吗?谢谢。

【问题讨论】:

  • 它不是 :not 的副本,因为 :not 不是解决方案的一部分,它只是我认为它在逻辑上可行的方式,但它没有,谢谢

标签: javascript jquery css jquery-selectors css-selectors


【解决方案1】:

您要查找的方法是filter()。它将根据给定的选择器过滤掉一个 jQuery 对象列表。由于找不到“非:hidden”选择器,我使用了相反的:visible

$("ul#filterlist li:nth-child(3n)").filter(":visible").css("marginTop", "0");

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    如果不想统计隐藏元素,可以试试下面的代码。

    $("ul#filterlist li:visible").filter(function(index){ 
        return (index+1)%3 == 0?true:false;
    }).css("marginTop", "0");
    

    请参阅 jsfiddle here 中的示例

    【讨论】:

      【解决方案3】:

      尝试链接 :selectors

      $("ul#filterlist li:nth-child(3n):not(:hidden)").css("marginTop", "0");
      

      如本答案所示:

      jQuery - multiple :not selector

      【讨论】:

      • 如果是:not:hidden,则必须是:visible
      • visibility 也可以是 :collapse,虽然在非表格元素上使用时会被隐藏
      • 另一个示例 $("#divdetails span:nth-child(2):contains('s')")
      猜你喜欢
      • 1970-01-01
      • 2015-06-27
      • 2015-01-17
      • 2011-11-01
      • 2013-08-30
      • 2017-06-20
      • 2015-01-31
      • 2010-09-07
      • 2012-03-19
      相关资源
      最近更新 更多