jQuery 遍歷 closest() 方法

jQuery 遍歷 closest() 方法

jQuery 參考手冊 遍歷jQuery 參考手冊 遍歷

closest() 方法獲得匹配選擇器的第一個(gè)祖先元素,從當(dāng)前元素開始沿 DOM 樹向上。

 

1. 語法

.closest(selector)
參數(shù) 描述
selector 字符串值,包含匹配元素的選擇器表達(dá)式。

如果給定表示 DOM 元素集合的 jQuery 對象,.closest() 方法允許我們檢索 DOM 樹中的這些元素以及它們的祖先元素,并用匹配元素構(gòu)造新的 jQuery 對象。.parents() 和 .closest() 方法類似,它們都沿 DOM 樹向上遍歷。兩者之間的差異盡管微妙,卻很重要:

.closest() .parents()
從當(dāng)前元素開始 從父元素開始
沿 DOM 樹向上遍歷,直到找到已應(yīng)用選擇器的一個(gè)匹配為止。 沿 DOM 樹向上遍歷,直到文檔的根元素為止,將每個(gè)祖先元素添加到一個(gè)臨時(shí)的集合;如果應(yīng)用了選擇器,則會基于該選擇器對這個(gè)集合進(jìn)行篩選。
返回包含零個(gè)或一個(gè)元素的 jQuery 對象 返回包含零個(gè)、一個(gè)或多個(gè)元素的 jQuery 對象

請看下面的 HTML 片段:

<ul id="one" class="level-1">
  <li class="item-i">I</li>
  <li id="ii" class="item-ii">II
  <ul class="level-2">
    <li class="item-a">A</li>
    <li class="item-b">B
      <ul class="level-3">
        <li class="item-1">1</li>
        <li class="item-2">2</li>
        <li class="item-3">3</li>
      </ul>
    </li>
    <li class="item-c">C</li>
  </ul>
  </li>
  <li class="item-iii">III</li>
</ul>

例子 1

假設(shè)我們執(zhí)行一個(gè)從項(xiàng)目 A 開始的對 <ul> 元素的搜索:

$('li.item-a').closest('ul').css('background-color', 'red');

這會改變 level-2 <ul> 的顏色,這是因?yàn)楫?dāng)向上遍歷 DOM 樹時(shí)會第一個(gè)遇到該元素。

例子 2

假設(shè)我們搜索的是 <li> 元素:

$('li.item-a').closest('li').css('background-color', 'red');

這會改變列表項(xiàng)目 A 的顏色。在向上遍歷 DOM 樹之前,.closest() 方法會從 li 元素本身開始搜索,直到選擇器匹配項(xiàng)目 A 為止。

例子 3

我們可以傳遞 DOM 元素作為 context,在其中搜索最接近的元素。

var listItemII = document.getElementById('ii');
$('li.item-a').closest('ul', listItemII).css('background-color', 'red');
$('li.item-a').closest('#one', listItemII).css('background-color', 'green');

以上代碼會改變 level-2 <ul> 的顏色,因?yàn)樗仁橇斜眄?xiàng) A 的第一個(gè) <ul> 祖先,同時(shí)也是列表項(xiàng) II 的后代。它不會改變 level-1 <ul> 的顏色,因?yàn)樗皇?list item II 的后代。

 

2. 范例

本例演示如何通過 closest() 完成事件委托。當(dāng)被最接近的列表元素或其子后代元素被點(diǎn)擊時(shí),會切換黃色背景:

$( document ).bind("click", function( e ) {
    $( e.target ).closest("li").toggleClass("hilight");
  });

jQuery 參考手冊 遍歷jQuery 參考手冊 遍歷

下一節(jié):jQuery 遍歷 contents() 方法

jQuery 教程

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频