【问题标题】:Why gt() and lt() are only jQuery selectors, instead eq() is also a method?为什么 gt() 和 lt() 只是 jQuery 选择器,而 eq() 也是一种方法?
【发布时间】:2017-04-10 03:53:33
【问题描述】:

在 jQuery 中,为什么只有 eq() 既是选择器 (:) 又是方法 (.),而 gt()lt() 只是选择器(“对象不支持该属性或方法”)?

我不明白这种 jQuery 语法的不一致/差距是否有特殊原因?

$("#eq").click(function(){
  alert($("li").eq(0).text());
  $("li").eq(1).css("background-color", "yellow");
});
$("#eq2").click(function(){
  alert($("li:eq(0)").text());
  $("li:eq(1)").css("background-color", "yellow");
});
$("#gt").click(function(){
  $("li").gt(1).css("background-color", "yellow");
});
$("#gt2").click(function(){
  $("li:gt(1)").css("background-color", "yellow");
});
$("#lt").click(function(){
  $("li").lt(1).css("background-color", "yellow");
});
$("#lt2").click(function(){
  $("li:lt(1)").css("background-color", "yellow");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="indice">
 <li>Primo capitolo</li>
 <li>Secondo capitolo
  <ul>
   <li>Sottocapitolo</li>
  </ul>
 </li>
 <li>Terzo capitolo</li>
</ul>
<button id="eq">.eq()</button>
<button id="eq2">:eq()</button><br>
<button id="gt">.gt()</button> <!-- NO -->
<button id="gt2">:gt()</button><br>
<button id="lt">.lt()</button> <!-- NO -->
<button id="lt2">:lt()</button>

【问题讨论】:

    标签: jquery


    【解决方案1】:

    我想,它被认为是内置的还不够有用。使用 .eq() 而不是 :eq 允许 jQuery 使用 querySelectorAll 来大幅提升性能。

    无论如何,您都可以像这样使用.slice

    $("li").slice(0,4); // :lt(4)
    $("li").slice(5); // :gt(4)
    

    或者,自己添加它们:

    $.fn.lt = function(n) {return this.slice(0,n);};
    $.fn.gt = function(n) {return this.slice(n+1);};
    

    例子:

    $.fn.lt = function(n) {return this.slice(0,n);};
    $.fn.gt = function(n) {return this.slice(n+1);};
    $("div").lt(2).css("color", "blue");
    $("div").gt(2).css("border", "1px solid red");
    $("div").eq(2).css("background-color", "yellow");
    <div>0</div>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2011-05-11
      • 2016-03-31
      • 2013-11-01
      • 2011-05-14
      • 2013-03-17
      • 1970-01-01
      相关资源
      最近更新 更多