溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

jQuery中DOM節(jié)點如何遍歷

發(fā)布時間:2021-07-24 14:30:45 來源:億速云 閱讀:155 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細講解有關(guān)jQuery中DOM節(jié)點如何遍歷,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

children()方法

jQuery是一個合集對象,如果想快速查找合集里面的第一級子元素,此時可以用children()方法。這里需要注意:.children(selector) 方法是返回匹配元素集合中每個元素的所有子元素(僅兒子輩,這里可以理解為就是父親-兒子的關(guān)系)

節(jié)點查找關(guān)系

<div class="div">
  <ul class="son">
    <li class="grandson">1</li>
  </ul>
</div>

代碼如果是$("div").children(),那么意味著只能找到ul,因為div與ul是父子關(guān)系,li與div是祖輩關(guān)系,因此無法找到

children()無參數(shù)

允許通過在DOM樹中對這些元素的直接子元素進行搜索,并且構(gòu)造一個新的匹配元素的jQuery對象

注意:jQuery是一個合集對象,所以通過children匹配合集中每一個元素的第一級子元素

.children()方法選擇性地接受同一類型選擇器表達式

$("div").children(".selected")

同樣的也是因為jQuery是合集對象,可能需要對這個合集對象進行一定的篩選,找出目標元素,所以允許傳一個選擇器的表達式

find()方法

jQuery是一個合集對象,如果想快速查找DOM樹中的這些元素的后代元素,此時可以用find()方法,這也是開發(fā)使用頻率很高的方法。這里要注意 children與find方法的區(qū)別,children是父子關(guān)系查找,find是后代關(guān)系(包含父子關(guān)系)

節(jié)點查找關(guān)系

<div class="div">
  <ul class="son">
    <li class="grandson">1</li>
  </ul>
</div>

代碼如果是$("div").find("li"),此時,li與div是祖輩關(guān)系,通過find方法就可以快速的查找到

.find()方法要注意的知識點

  • find是遍歷當前元素集合中每個元素的后代。只要符合,不管是兒子輩,孫子輩都可以

  • 與其他的樹遍歷方法不同,選擇器表達式對于 .find() 是必需的參數(shù)。如果我們需要實現(xiàn)對所有后代元素的取回,可以傳遞通配選擇器 '*'

  • find只在后代中遍歷,不包括自己

  • 選擇器 context 是由 .find() 方法實現(xiàn)的;因此,$('.item-ii').find('li') 等價于 $('li', '.item-ii')(找到類名為item-ii的標簽下的li標簽)

注意重點

.find()和.children()方法是相似的

  • children只查找第一級的子節(jié)點

  • find查找范圍包括子節(jié)點的所有后代節(jié)點

parent()方法
jQuery是一個合集對象,如果想快速查找合集里面的每一個元素的父元素(這里可以理解為就是父親-兒子的關(guān)系),此時可以用parent()方法;因為是父元素,這個方法只會向上查找一級

節(jié)點查找關(guān)系

<div class="div">
  <ul class="son">
    <li class="grandson">1</li>
  </ul>
</div>
// 查找ul的父元素div, $(ul).parent()

parent()無參數(shù)

parent()方法允許我們能夠在DOM樹中搜索到這些元素的父級元素,從有序的向上匹配元素,并根據(jù)匹配的元素創(chuàng)建一個新的 jQuery 對象

注意:jQuery是一個合集對象,所以通過parent是匹配合集中每一個元素的父元素

parent()方法選擇性地接受同一型選擇器表達式

同樣的也是因為jQuery是合集對象,可能需要對這個合集對象進行一定的篩選,找出目標元素,所以允許傳一個選擇器的表達式

parents()方法

jQuery是一個合集對象,如果想快速查找合集里面的每一個元素的所有祖輩元素,此時可以用parents()方法

其實也類似find與children的區(qū)別,parent只會查找一級,parents則會往上一直查到查找到祖先節(jié)點

節(jié)點查找關(guān)系

<div class="div">
  <ul class="son">
    <li class="grandson">1</li>
  </ul>
</div>
// 在li節(jié)點上找到祖輩元素div,用$("li").parents()方法

parents()無參數(shù)

parents()方法允許我們能夠在DOM樹中搜索到這些元素的祖先元素,從有序的向上匹配元素,并根據(jù)匹配的元素創(chuàng)建一個新的 jQuery 對象;返回的元素秩序是從離他們最近的父級元素開始的

注意:jQuery是一個合集對象,所以通過parent是匹配合集中所有元素的祖輩元素

parents()方法選擇性地接受同一型選擇器表達式

同樣的也是因為jQuery是合集對象,可能需要對這個合集對象進行一定的篩選,找出目標元素,所以允許傳一個選擇器的表達式

注意事項

  1. .parents()和.parent()方法是相似的,但后者只是進行了一個單級的DOM樹查找

  2. $( "html" ).parent()方法返回一個包含document的集合,而$( "html" ).parents()返回一個空集合。

closest()方法

以選定的元素為中心,往內(nèi)查找可以通過find、children方法。如果往上查找,也就是查找當前元素的父輩祖輩元素,jQuery提供了closest()方法,這個方法類似parents但是又有一些細微的區(qū)別,屬于使用頻率很高的方法

closest()方法接受一個匹配元素的選擇器字符串

從元素本身開始,在DOM 樹上逐級向上級元素匹配,并返回最先匹配的祖先元素

// 在div元素中,往上查找所有的li元素,可以這樣表達
$("div").closet("li')

注意:jQuery是一個合集對象,所以通過closest是匹配合集中每一個元素的祖先元素

closest()方法給定的jQuery集合或元素來過濾元素

同樣的也是因為jQuery是合集對象,可能需要對這個合集對象進行一定的篩選,找出目標元素,所以允許傳一個jQuery的對象

注意事項

  • 起始位置不同:.closest開始于當前元素 .parents開始于父元素

  • 遍歷的目標不同:.closest要找到指定的目標,.parents遍歷到文檔根元素,closest向上查找,直到找到一個匹配的就停止查找,parents一直查找到根元素,并將匹配的元素加入集合

  • 結(jié)果不同:.closest返回的是包含零個或一個元素的jquery對象,parents返回的是包含零個或一個或多個元素的jquery對象

next()方法

jQuery是一個合集對象,如果想快速查找指定元素集合中每一個元素緊鄰的后面同輩元素的元素集合,此時可以用next()方法

節(jié)點查找關(guān)系

//如下的class="item-2"就是class="item-1"的兄弟元素
<ul class="level-3">
  <li class="item-1">1</li>
  <li class="item-2">2</li>
  <li class="item-3">3</li>
</ul>

next()無參數(shù)

允許我們找遍元素集合中緊跟著這些元素的直接兄弟元素,并根據(jù)匹配的元素創(chuàng)建一個新的 jQuery 對象。

注意:jQuery是一個合集對象,所以通過next匹配合集中每一個元素的下一個兄弟元素

next()方法選擇性地接受同一類型選擇器表達式

同樣的也是因為jQuery是合集對象,可能需要對這個合集對象進行一定的篩選,找出目標元素,所以允許傳一個選擇器的表達式

prev()方法

jQuery是一個合集對象,如果想快速查找指定元素集合中每一個元素緊鄰的前面同輩元素的元素集合,此時可以用prev()方法

節(jié)點查找關(guān)系

如下的class="item-1"節(jié)點就是class="item-2"的li元素的prev兄弟節(jié)點

<ul class="level-3">
  <li class="item-1">1</li>
  <li class="item-2">2</li>
  <li class="item-3">3</li>
</ul>

prev()無參數(shù)

取得一個包含匹配的元素集合中每一個元素緊鄰的前一個同輩元素的元素集合

注意:jQuery是一個合集對象,所以通過prev是匹配合集中每一個元素的上一個兄弟元素
prev()方法選擇性地接受同一類型選擇器表達式

同樣的也是因為jQuery是合集對象,可能需要對這個合集對象進行一定的篩選,找出目標元素,所以允許傳一個選擇器的表達式

siblings()

jQuery是一個合集對象,如果想快速查找指定元素集合中每一個元素的同輩元素,此時可以用siblings()方法

節(jié)點查找關(guān)系
如下是class="item-1"和class="item-3"就是class="item-2"的siblings兄弟節(jié)點

<ul class="level-3">
  <li class="item-1">1</li>
  <li class="item-2">2</li>
  <li class="item-3">3</li>
</ul>

siblings()無參數(shù)

取得一個包含匹配的元素集合中每一個元素的同輩元素的元素集合

注意:jQuery是一個合集對象,所以通過siblings是匹配合集中每一個元素的同輩元素
siblings()方法選擇性地接受同一類型選擇器表達式

同樣的也是因為jQuery是合集對象,可能需要對這個合集對象進行一定的篩選,找出目標元素,所以允許傳一個選擇器的表達式

add()方法

jQuery是一個合集對象,通過$()方法找到指定的元素合集后可以進行一系列的操作。$()之后就意味著這個合集對象已經(jīng)是確定的,如果后期需要再往這個合集中添加一新的元素要如何處理?jQuery為此提供add方法,用來創(chuàng)建一個新的jQuery對象 ,元素添加到匹配的元素集合中

.add()的參數(shù)可以幾乎接受任何的$(),包括一個jQuery選擇器表達式,DOM元素,或HTML片段引用

//操作:選擇所有的li元素,之后把p元素也加入到li的合集中
<ul>
  <li>list item 1</li>
  <li>list item 3</li>
</ul>
<p>新的p元素</p>

// 處理一:傳遞選擇器
$('li').add('p')
// 處理二:傳遞dom元素
$('li').add(document.getElementsByTagName('p')[0])
// 動態(tài)創(chuàng)建P標簽加入到合集,然后插入到指定的位置,但是這樣就改變元素的本身的排列了
 $('li').add('<p>新的p元素</p>').appendTo(目標位置)

each()

jQuery是一個合集對象,通過$()方法找到指定的元素合集后可以進行一系列的操作

如操作$("li").css('') 給所有的li設(shè)置style值,因為jQuery是一個合集對象,所以css方法內(nèi)部就必須封裝一個遍歷的方法,被稱為隱式迭代的過程。要一個一個給合集中每一個li設(shè)置顏色,這里方法就是each

.each() 方法就是一個for循環(huán)的迭代器,它會迭代jQuery對象合集中的每一個DOM元素。每次回調(diào)函數(shù)執(zhí)行時,會傳遞當前循環(huán)次數(shù)作為參數(shù)(從0開始計數(shù))

三個重點

  • each是一個for循環(huán)的包裝迭代器

  • each通過回調(diào)的方式處理,并且會有2個固定的實參,索引與元素

  • each回調(diào)方法中的this指向當前迭代的dom元素

實例:

<ul>
  <li>克利夫蘭騎士</li>
  <li>LeBorn James</li>
</ul>
開始迭代li,循環(huán)2次
$("li").each(function(index, element) {
   index 索引 0,1
   element是對應(yīng)的li節(jié)點 li,li
   this 指向的是li
})
<!DOCTYPE html>
<html>

<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  <title></title>
  <style>
  .left {
    width: auto;
    height: 150px;
  }
  
  .left div {
    width: 150px;
    height: 120px;
    padding: 5px;
    margin: 5px;
    float: left;
    background: #bbffaa;
    border: 1px solid #ccc;
  }
  </style>
  <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
  <h3>each方法</h3>
  <div class="left first-div">
    <div class="div">
      <ul>
        <li>list item 1</li>
        <li>list item 2</li>
        <li>list item 3</li>
      </ul>
    </div>
    <div class="div">
      <ul>
        <li>list item 4</li>
        <li>list item 5</li>
        <li>list item 6</li>
      </ul>
    </div>
  </div>

  <br/>
  <button>點擊:each方法遍歷元素</button>
  <button>點擊:each方法回調(diào)判斷</button>
  <script type="text/javascript">
  $("button:first").click(function() {
    //遍歷所有的li
    //修改每個li內(nèi)的字體顏色
    $("li").each(function(index, element) {
      $(this).css('color','red')
    })

  })
  </script>
  <script type="text/javascript">
  $("button:last").click(function() {
    //遍歷所有的li
    //修改偶數(shù)li內(nèi)的字體顏色
    $("li").each(function(index, element) {
      if (index % 2) {
        $(this).css('color','blue')
      }
    })
  })
  </script>
</body>

</html>

關(guān)于“jQuery中DOM節(jié)點如何遍歷”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI