为什么gt()和lt()只是jQuery选择器,而eq()也是一个方法?

在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"); }); 
  
  • Primo capitolo
  • Secondo capitolo
    • Sottocapitolo
  • Terzo capitolo


我想,它不被认为是内置的有用。 使用.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"); 
 
0
1
2
3
4