首頁  >  文章  >  web前端  >  jQuery向上遍歷DOM樹之parents(),parent(),closest()之間的區別_jquery

jQuery向上遍歷DOM樹之parents(),parent(),closest()之間的區別_jquery

WBOY
WBOY原創
2016-05-16 17:11:231124瀏覽

在這個sprint中,因為要寫前端UI,所以用到了jQuery,但是jQuery在向上遍歷DOM樹的API中,有parents()、 parent()、closest()這幾個,一直不太清楚它們具體的區別,所以狠下心好好讀了一下jQuery的API文檔,並把區別記在這裡,以供參考。

 1.parents([selector])

本方法用於選擇給定jQuery物件中包含的DOM元素或DOM元素集的祖先節點,並將這些節點包裝成jQuery物件傳回,傳回的節點集是以從裡到外的順序排序的。

同時,本方法也接受一個字串選擇器,用於從傳回的節點集中篩選符合選擇器的子元素集。

 2.parent([selector])

本方法用於選擇給定jQuery物件中包含的DOM元素或DOM元素集的父節點。它和parents()不同的是,它只會向上搜尋一層,而parents()會搜尋整個DOM樹。

本方法也可以接受一個字串選擇器,用來篩選傳回的元素。

有人可能會問:一個DOM元素的父元素不是只有一個麼,為什麼還要一個selector選擇器來篩選呢?其實一個jQuery物件可能包含有很多個DOM元素,例如$('a').parent()就是選擇所有標籤的父元素,這樣回傳的就是一個元素集,所以可以進行篩選。

 3.closest(selector)

本方法用於向上遍歷jQuery物件中包含的DOM元素或DOM元素集的祖先節點,直到找到符合selector選擇器的節點為止。

它和parents()的區別:

closest()從自身開始往上遍歷,直到找到適合的節點,回傳的jQuery物件包含0個或1個物件;

parents()從自身的父節點開始向上遍歷,傳回所有祖先節點,並根據選擇器對這些節點進行篩選,最終傳回的jQuery物件可能包含0、1或多個物件。

 一個能說明差異的例子:

複製代碼 代碼如下:




    a test document


  


           
               
   






在上述文件中:

$('b').parents()將傳回:由span、p、div、body、html等元素建構的jQuery物件;

$('b').parent()將回傳:span建構的jQuery物件;

$('b').closest('div')將傳回:由div建構的jQuery物件。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn