作者TonyQ (沉默是金)
看板Ajax
標題Re: [JQuery] 選取children的children
時間Tue Jan 6 23:02:45 2009
※ 引述《JYHuang (夏天到了,冷不起來了說)》之銘言:
: 為何用.children("A>IMG")或是.children("A IMG")都無效?
^^^^^^^ 這個用法是屬於filter
: 要用到$(this).children("A").children("IMG")才能選擇
這是 jQuery filter 的經典問題之一 ,
我曾經試著在
#18dmyXuJ (Ajax) , 這篇的 filter中解釋這問題.
簡單來說
以一般的 ul/li 來說 ,
$("ul").children() 實際上是這樣的 context (由很多li元素構成的陣列)
[li,li,li,.....]
也就是由 li群所構成的集合 ,
filter 的作用是將這群集合中滿足條件的資料留下來.
他只針對 jQuery context 中的資料作篩選
也就是 $("ul").children("li:first")
實際上會得到的是
[li,li,li........] <<母集合
-> 過濾條件第一個li
-> 結果 [li]
再換個selector 來舉例
$("ul").children("p")
實際上是
[li,li,li........] <<母集合
-> 過濾條件屬於 p tag的物件
-> 結果 [] (沒有任何母集合的資料滿足)
注意 , 這裡完全就只看 context 實際指到的東西 ,
不管 li 裡面還有包什麼 , 它就只看li.
────────────────────────────────
要「找到子元素中的特定元素」,該用的是 find.
以你原本的例子來看就是 $(this).find("a>img")
或者是用簡單的簡式 $(查詢字串,查詢目標)
$("a>img",$(this)) //這個code跟上面的意義一樣.
────────────────────────────────
filter 跟 find 用途跟適用的地方可以說是幾乎完全不一樣 ,
但是卻非常容易搞混(我已經看過超過五個人搞混) , 要盡量小心這點.
--
What do you want to have ? / What do you have?
從書本中,你可以發現我的各種興趣。
從CD中,你可以瞭解我所喜歡的偶像明星。
或許從文字你很難以瞭解一個人,但從物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 221.169.78.140
※ 編輯: TonyQ 來自: 221.169.78.140 (01/06 23:02)
1F:推 JYHuang:$(#TonyQ).send('感謝') XDD 01/06 23:09
2F:推 JYHuang:發文前有去翻那些文,結果還是漏看了 囧> 01/06 23:11
3F:→ TonyQ:應該說這本來在沒碰到問題之前就不好懂. :p 01/06 23:14
4F:推 chrisQQ:推~ 感覺以後一定會用到 XD 01/06 23:55
5F:推 gpmm:有下有推~(咦 01/07 00:40