.eq() 減少匹配元素的集合,根據index索引值,精確指定索引對象。 .get() 通過檢索匹配jQuery對象得到對應的DOM元素。
同樣是返回元素,那么eq與get有什么區(qū)別呢?
eq返回的是一個jQuery對象,get返回的是一個DOM對象。舉個例子:
$( "li" ).get( 0 ).css("color", "red"); //錯誤 $( "li" ).eq( 0 ).css("color", "red"); //正確
get方法本質上是把jQuery對象轉換成DOM對象,但是css屬于jQuery構造器的,DOM是不存在這個方法的,如果需要用jQuery的方法,我們必須這樣寫:
var li = $( "li" ).get( 0 ); $( li ).css("color", "red"); //用$包裝
取出DOM對象li,然后用$再次包裝,使之轉變成jQuery對象,才能調用css方法,這樣要分2步寫太麻煩了,所以jQuery給我們提供了一個便捷方法eq()。
eq()的實現原理就是在上面代碼中的把eq方法內部轉成jQuery對象:
eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
上面實現代碼的邏輯就是跟get是一樣的,區(qū)別就是通過了pushStack產生了一個新的jQuery對象。
jQuery的考慮很周到,通過eq方法只能產生一個新的對象,但是如果需要的是一個合集對象要怎么處理?因此jQuery便提供了一個slice方法:
語法:
.slice( start [, end ] )
作用:
根據指定的下標范圍,過濾匹配的元素集合,并生成一個新的 jQuery 對象。
因為是數組對象,意味著我們可以用silce來直接取值了,所以針對合集對象我們可以這樣寫代碼:
var arr = [] arr.push( this.slice(start[,end]) ) this.pushStack(arr)
這個this指的是jQuery對象,因為jQuery對象是數組集合,所以我們可以通過原生的silce方法直接取到集合數,然后通過包裝處理即可了。
slice: function() { return this.pushStack( slice.apply( this, arguments ) ); },
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報