【问题标题】:Opposite of jQuery's :eq()与 jQuery 的 :eq() 相反
【发布时间】:2012-08-16 22:33:08
【问题描述】:

有谁知道是否存在某种选择器来从匹配集中选择所有元素,但由指示索引给出的元素。例如:

$("li").neq(2).size();

假设有 5 个元素,最后一条语句将给出 4 个,并且将包含所有 <li> 元素,但 DOM 中的第二个元素除外。

【问题讨论】:

    标签: javascript jquery jquery-selectors


    【解决方案1】:

    使用not:

    $('li').not(':eq(2)');
    

    【讨论】:

    【解决方案2】:

    好吧,只是

    $("li:not(:eq(2))");
    

    【讨论】:

      【解决方案3】:

      其他答案也可以,但作为替代方案,您可以为 neq 实现自己的自定义选择器

      $.extend($.expr[":"], {  
          neq: function(elem, i, match) {  
              return i !== (match[3] - 0);
          }  
      });  
      

      然后你就可以按照你最初的建议去做了。

      $("li:neq(2)").size();
      

      虽然另一篇文章建议使用.length 而不是.size,这会更好,因为它只是一个属性而不是额外的函数调用。

      $("li:neq(2)").length;
      

      【讨论】:

      【解决方案4】:

      我会在这种情况下使用过滤器,

      $('li').filter(function (i, item) {
         return i != 2;
      })
      

      【讨论】:

        【解决方案5】:

        除了自定义选择器之外,您还可以将其实现为 jQuery 插件:

        $.fn.neg = function (index) {
            return this.pushStack( this.not(':eq(' + index + ')') );
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-10
          • 1970-01-01
          • 1970-01-01
          • 2013-02-10
          • 1970-01-01
          • 2011-05-10
          • 2012-12-13
          相关资源
          最近更新 更多