Skip to content

jQuery 過濾方法:first()、last()、eq() 與 filter()

jQuery 過濾方法:first、last、eq、filter

選到一整組元素之後,用特定方法過濾出真正需要的那幾個,是 物件樹遍歷 的最後一塊拼圖。

索引從 0 起算

eq():even:odd 依的都是從 0 開始的索引,不是視覺上的第幾個。這是最常寫錯的地方。

first()

在集合內,選取第一個元素。

範例

html
<ul id="List">
  <li>List Item 1</li>
  <li>List Item 2</li>
  <li>List Item 3</li>
  <li>List Item 4</li>
  <li>List Item 5</li>
</ul>
js
$('#List li').first().css('background-color', 'pink');

last()

在集合內,選取最後一個元素。

範例

html
<ul id="List">
  <li>List Item 1</li>
  <li>List Item 2</li>
  <li>List Item 3</li>
  <li>List Item 4</li>
  <li>List Item 5</li>
</ul>
js
$('#List li').last().css('background-color', 'pink');

eq()

在集合內,依索引位置選取指定的元素。索引從 0 起算,填負數則代表從尾端往回數。

js
eq(index);

參數

功能說明型別範例備註
index索引位置Number0-1必填

範例

填 3 選到的是第四個項目。

html
<ul id="List">
  <li>List Item 1</li>
  <li>List Item 2</li>
  <li>List Item 3</li>
  <li>List Item 4</li>
  <li>List Item 5</li>
</ul>
js
$('#List li').eq(3).css('background-color', 'pink');

filter()

過濾出指定的元素。它是在既有集合上再篩一次,當集合是一路遍歷過來、無法用單一 選取器 描述時特別好用。

js
filter(selector);

參數

功能說明型別範例備註
selector選取器String':even'':odd'必填

範例

:odd 取的是索引為奇數的項目,也就是畫面上的第二、第四個,與肉眼判斷的奇偶剛好相反。

html
<ul id="List">
  <li>List Item 1</li>
  <li>List Item 2</li>
  <li>List Item 3</li>
  <li>List Item 4</li>
  <li>List Item 5</li>
</ul>
js
$('#List li').filter(':odd').css('background-color', 'pink');

純樣式交給 CSS

若只是想做出斑馬紋這類視覺效果,用 CSS 的偽類別 就夠了,不必動用 JavaScript。

常見問題

索引是從 0 還是 1 開始?

從 0 開始。因此取第三個元素要填 2,這也是最容易寫錯的地方。

eq 可以填負數嗎?

可以。負數代表從集合的尾端往回數,填 -1 就是最後一個,效果等同 last()

even 和 odd 為什麼和肉眼看到的相反?

因為它們依的是從 0 起算的索引,不是視覺上的第幾個。畫面上的第一個項目索引是 0,會被 :even 選中。

filter 和直接寫在選取器裡差在哪?

結果通常相同,但 filter() 是在既有集合上再篩一次。當集合是一路 遍歷 過來、無法用單一選取器描述時,就只能靠 filter()

過濾之後還能繼續遍歷嗎?

可以。過濾方法一樣回傳新的集合,後面可以繼續接其他遍歷或 操作方法

延伸閱讀

參考資料:jQuery API:Traversing