DIV CSS 佈局教程網

jQ的find()方法
編輯:JQuery常見問題     
先看一個實例:搜索所有段落中的後代 span 元素,並將其顏色設置為紅色。代碼如下:

<p><span>Hello</span>, how are you?</p>
<p>Me? I'm <span>good</span>.</p>
<script>
$("p").find("span").css('color','red');
</script>
效果如下:

Hello, how are you?

Me? I'm good.



定義和用法
find() 方法獲得當前元素集合中每個元素的後代,通過選擇器、jQuery 對象或元素來篩選。

語法
.find(selector)

參數selector字符串值,包含供匹配當前元素集合的選擇器表達式。

詳細說明
如果給定一個表示 DOM 元素集合的 jQuery 對象,.find() 方法允許我們在 DOM 樹中搜索這些元素的後代,並用匹配元素來構造一個新的 jQuery 對象。.find() 與 .children() 方法類似,不同的是後者僅沿著 DOM 樹向下遍歷單一層級。

.find() 方法第一個明顯特征是,其接受的選擇器表達式與我們向 $() 函數傳遞的表達式的類型相同。將通過測試這些元素是否匹配該表達式來對元素進行過濾。

請思考下面這個簡單的嵌套列表:

<ul class="level-1">
<li class="item-i">I</li>
<li 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>

我們將從列表 II 開始來查找其中的列表項:
$('li.item-ii').find('li').css('background-color', 'red');

效果如下:
  • I
  • II
    • A
    • B
      • 1
      • 2
      • 3
    • C
  • III


這次調研的結果是,項目 A、B、1、2、3 以及 C 均被設置了紅色背景。即使項目 II 匹配選擇器表達式,它也不會被包含在結果中;只會對後代進行匹配。
與其他的樹遍歷方法不同,選擇器表達式對於 .find() 是必需的參數。如果我們需要實現對所有後代元素的取回,可以傳遞通配選擇器 '*'。

選擇器 context 是由 .find() 方法實現的;因此,$('li.item-ii').find('li') 等價於 $('li', 'li.item-ii')。

對於 jQuery 1.6,我們還可以使用給定的 jQuery 集合或元素來進行篩選。還是上面的嵌套列表,我們首先這樣寫:
var $allListElements = $('li');

然後將這個 jQuery 對象傳遞給 find 方法:
$('li.item-ii').find( $allListElements );

上面的代碼會返回一個 jQuery 集合,其中包含屬於列表 II 後代的列表元素。

類似地,也可以傳遞一個元素:
var item1 = $('li.item-1')[0];
$('li.item-ii').find( item1 ).css('background-color', 'red');


這次調用的結果是項目 1 被設置為紅色背景。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved