閱讀626 返回首頁    go 阿裏雲 go 技術社區[雲棲]


jquery中closest()與parents()的方法區別分析總結

在jquery中parents()查找父級元素刪除的時候,發現它不包含根元素,於是用了closest(),效果不錯,下麵我給大家具體的介紹

closest

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

語法:

.closest(selector, context)

參數selector為字符串值,用以過濾匹配元素的擇器表達式

參數context可選,作為待查找的 DOM 元素集或者文檔

context參數

closet(selector,context)中context參數的用法:從當前元素開始遍曆到context元素結束,若不存在context參數遍曆到根結點;由此可見使用context參數可以提高查詢效率

var listItemII = document.getElementById('ii');  //var listItemII=$(‘#ii'),這個不行,困惑好很久!
$('li.item-1').closest('ul', listItemII).css('background-color', 'red');   //結果必須是item-1的父級ul元素,itemII的子元素 
$('li.item-1').closest('#one', listItemII).css('background-color', 'green');  //item-1的id=one的元素,且必須是itemII的子元素,未找到

.parents() 和 .closest() 方法類似,它們都用於沿 DOM 樹向上遍曆,匹配元素的選擇器字符串。兩者之間的差異盡管微妙,卻很重要:

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

先看下麵的示例:演示如何通過 closest() 完成事件委托。當被最接近的列表元素或其子後代元素被點擊時,會切換黃色背景

<style>
    li.hilight { background: yellow; }
</style>
<ul>
    <li><b>Click me!</b></li>
    <li>You can also <b>Click me!</b></li>
</ul>
<script>
    $( document ).bind("click", function( e ) {
    $( e.target ).closest("li").toggleClass("hilight");
  });
</script>

1、當鼠標點擊“You can also”時顏色出現變化。這是因為closest是從當前元素開始向上遍曆的。而不同於parents()方法,是從當前元素的父元素開始向上遍曆

2、當點擊Click me!時,顏色也會變化。這同樣經過上麵步驟,從當前元素向上匹配,隻不過不符合條件,再往上時遇見了

最後更新:2017-06-23 23:02:41

  上一篇:go  Cloudera Spark 及 Hadoop 開發員培訓學習【北京上海】
  下一篇:go  Gradle創建Spring Boot項目——2JPA