首頁 > web前端 > js教程 > 用範例說明filter()與find()的用法以及children()與find()的區別分析_jquery

用範例說明filter()與find()的用法以及children()與find()的區別分析_jquery

WBOY
發布: 2016-05-16 17:35:05
原創
1816 人瀏覽過

jquery的find()方法與filter()方法對於初學者來說容易混淆,在這裡對這兩個方法透過一個小例子來進行比較和說明。旨在了解這兩種方法的差異。

html程式碼

複製程式碼 程式碼如下:


程式碼如下:



程式碼如下:


    

測試1

    

測試2

先看看find()方法




複製程式碼

程式碼如下:

$("div").find(".rain").css('color', '#FF0000');//等價於:$("div .rain").css('color','#ff0000');//也等價於:$(".rain","div"). css('color','#ff0000');

顯示結果:


問題:這裡為什麼「測試2」不變為紅色?

find() 方法定義:它是獲得目前元素集合中每個元素的後代,透過選擇器、jQuery 物件或元素來篩選。

$("div").filter(".rain").css('color', '#FF0000');
登入後複製

find()方法要注意的地方:find()方法是在目前元素集合內部尋找。不包括自己。

上面範例中$("div")包含兩個元素。第一個元素符合要求。但第二個元素div本身的class雖然是"rain",但內部沒有class=rain。所以不符合。

下面用filter()方法看有什麼新玩意
顯示結果:

filter()方法定義:filter() 方法將匹配元素集合縮減為指定選擇器的元素。

意思是對匹配元素的集合,用選擇器測試每個元素本身(不是後代),符合選擇器的元素包含在集合中,不符合的去掉(選擇器就是起過濾作用)。形成一個新的結果集。 在上面範例中:find()會在div元素內部(後代)尋找 class為rain 的元素。而filter()則是篩選div的class為rain的元素。

一個是對它的子集操作,一個是對自身集合元素篩選。


看兩個filter()方法的例子:例一  

例二

使用filter()方法的第二個形式是,透過函數而不是選擇器來篩選元素。對於每個元素,如果函數傳回 true,則元素會包含在已篩選集合中;否則,會排除這個元素。 看一下下面的範例:




複製程式碼


程式碼如下:

------------ ---------------
來自網頁的訊息------------------------- --The code is in your clipboard now---------------------------確定   - --------------------------




複製程式碼
程式碼如下:$('li').filter(function(index) {  return $('strong', this).length == 1;}).css('background-color', 'red');

結果如下:

這裡在順便說一下find()方法和children()方法的差別

find()方法上面已經說過了,在此不在熬述,下面說一下children()方法。

children,表面意思就是:孩子,兒童,子女的意思。我一般這裡理解為子女或兒子。為什麼這樣理解?下面先看一下children的定義吧

children()方法定義:它是獲得匹配元素集合中每個元素的所有子元素。 (不包括自己,只能在兒子輩(第一層)找到) 

find() 方法定義:       它是取得目前元素集合中每個元素的後代,透過選擇器、jQuery 物件或元素來篩選。

我理解是children是匹配集合中每個元素的「兒子輩」的子元素。 find()除了兒子輩,還包括孫子輩。即只要是它的後代就好。

下面透過一個例子來看:

複製程式碼 程式碼如下:
🎜>







 

    Hello
     "selected">test
   

   

And One Last Time


   

again


 
 

Hello Again


<script>$("div").children(".selected").css("color", "blue" );</script>




結果如下圖:

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板