回答
有了這個HTML:
<ul>
<li>Mario</li>
<li>Luigi</li>
<li>Princess</li>
<li>Toad</li>
</ul>
而且這個JavaScript:
alert($("ul li").eq(0).text()); // Mario
alert($("ul li").eq(1).text()); // Luigi
alert($("ul li").eq(2).text()); // Princess
alert($("ul li").eq(3).text()); // Toad
.eq(i)
指定索引i
在從集合返回的元素。
在從鏈接的例子你貼:
$("p").eq(1).css("color", "red")
它基本上說:「尋找匹配$所有元素(」 P「),然後從第二個一個並改變其顏色爲紅色。 「
$("p")
匹配您文檔中的所有<p>
元素。你現在有這些集合。
$("p").eq(1)
僅將此集合減少到第2個元素。
.css("color", "red")
部分只是在該元素上操作以將其顏色更改爲紅色。
看看例子從文檔:
$("p").eq(1).css("color", "red")
$("p") selects all paragraphs in your document
.eq(1) selects the second element only
.css("color", "red") applies css rule to the selected element
好像'.eq()'會被稱爲'.get()',如果還沒有被使用的話。 '.get()'獲取底層的DOM元素。也許'$($(「p」)。get(1))'與$(「p」)相同,eq(1)' – 2009-09-15 17:16:46
它是。我認爲'$($(「p」)。get(1))'語法的唯一缺點是它不透明。 – SilentGhost 2009-09-15 17:39:31
這聽起來像你可能會被逮住的話「索引」。
在這種情況下,'索引'是指項目集合中的特定項目。因此,eq可讓您訪問一組匹配元素中的單個項目。
要理解eq()
的工作原理,我認爲它有助於理解$()
如何在jQuery中工作。當指定
$([selector],[context])
//which is the same as
$([context]).find([selector])
什麼獲取返回是一個的jQuery對象(有時被稱爲一個包裹設置)對於其每一個,除其他特性,有一個屬性開始0
和遞增1與選擇器匹配的元素。 A length
屬性也被設置,這就是爲什麼jQuery對象的匹配元素可以像數組一樣迭代(使用for循環或諸如each([callback])
之類的命令)。
現在讓我們來看看源eq()
eq: function(i) {
return this.slice(i, +i + 1);
},
我們看到eq()
使用jQuery對象的slice()
命令實現,讓我們也來看看這
slice: function() {
return this.pushStack(Array.prototype.slice.apply(this, arguments),
"slice", Array.prototype.slice.call(arguments).join(","));
},
並且還需要查看pushStack()
,內部使用了相當多的命令
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function(elems, name, selector) {
// Build a new jQuery matched element set
var ret = jQuery(elems);
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
ret.context = this.context;
if (name === "find")
ret.selector = this.selector + (this.selector ? " " : "") + selector;
else if (name)
ret.selector = this.selector + "." + name + "(" + selector + ")";
// Return the newly-formed element set
return ret;
},
我們可以看到pushStack
接受一個數組並返回一個新的jQuery對象。通過在JavaScript Array slice
函數上調用Function.apply
並將jQuery slice函數的arguments
作爲argsArray
傳入,獲得構成新jQuery對象的匹配元素的元素。
另一方面,get()
命令更直接。讓我們看看源
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array
get: function(num) {
return num === undefined ?
// Return a 'clean' array
Array.prototype.slice.call(this) :
// Return just the object
this[ num ];
}
稱爲而無需爲num
參數的自變量,jQuery對象被轉換成一個陣列,利用Function.call
在JavaScript的數組slice
功能。如果num
被定義,則在jQuery對象的相應屬性保持的值被返回,大致相同下面
$([selector]).get(0)
//is the same as
$([selector])[0]
+1通過源代碼解釋jQuery的辛勤工作。真的很有幫助。謝謝。 – boisvert 2012-12-09 21:13:34
- 1. EQ()針對其定義
- 2. jQuery:使用eq
- 3. eq()vs index()jquery
- 4. jquery - each()eq()click()
- 5. jquery中使用「:eq」和「.eq()」的地方
- 6. jQuery的ATTR和EQ
- 7. 使用jquery eq()獲取特定的DIV?
- 8. 使用jQuery .eq更新值
- 9. jQuery Selector(children,eq和innerhtml)
- 10. jQuery .eq()僅適用於表
- 11. jQuery's的對面:eq() - jquery
- 12. 查找通過JQuery的eq()
- 13. jquery動態結構與Eq
- 14. 什麼是($ file eq'。'|| $ file eq'..')?
- 15. 「:eq()」和.eq()的區別
- 16. 活動記錄未定義的方法`EQ」
- 17. Haskell中Eq的子類中的默認定義
- 18. Haskell在函數定義中使用Eq =>
- 19. 我們如何基於函數簡潔地定義Eq?
- 20. 綁定不同的事件與jQuery EQ(),而不是()
- 21. 與eq(索引)的jquery克隆功能
- 22. jquery eq()的純JS相當於()
- 23. jQuery for-loop與:eq/get - compress breadcrumb
- 24. 將變量傳遞給jquery eq()
- 25. jquery animate divs eq()方法關閉
- 26. jquery中get()和eq()有什麼區別?
- 27. if語句中的.eq()在jquery中
- 28. jQuery的EQ,以塊顯示褪色
- 29. 遍歷:EQ()選擇在jQuery的
- 30. jQuery(this).find('title')。next()。next()。next()。eq(0).text();?
需要注意的是當量()指定索引處返回包含元素的jQuery對象。這與[]或get()不同,它返回普通的dom元素。 – 2009-09-15 19:00:00