作者ThreeDay0905 (三天)
看板Ajax
標題[問題] 如何用jQuery指定階層抓取DOM物件
時間Wed Sep 29 18:50:30 2010
前輩好,
假如我的HTML架構為
==========================================
<div id="mainContainer">
<!--第一層第一個ul-->
<ul>
<li>1 - 1
<!--第二層第一個ul-->
<ul>
<li>1 - 1 - 1
<!--第三層第一個ul-->
<ul></ul>
</li>
<li>1 - 1 - 2</li>
</ul>
</li>
<li>1 - 2
<!--第二層第二個ul-->
<ul></ul>
</li>
<li>1 - 3</li>
<li>1 - 4</li>
</ul>
<!--第一層第二個ul-->
<ul>
<li>2 - 1</li>
</ul>
</div>
==========================================
我想要抓取第一層的ul下的第一層li
我可以下
==========================================
$('
#mainContainer>ul>li');
==========================================
只是想請問,假如我已經有一個jQuery物件
==========================================
$container = $('
#mainContainer');
==========================================
我要怎麼使用$container這個物件去找出他下之下第一層的ul的第一層li呢
我知道可以用
==========================================
$container.children('ul').children('li');
==========================================
去找出我要的物件
只是這個狀況是簡化後的過程
實際上用起來可能是要找第n層的ul的第m層li
或著更複雜的狀況
這樣用.chilren([selector])去串接
不只難以閱讀,可能效能上也會有影響(? 其實不確定)
是以想請問前輩
jQuery有辦法用指定階層數的方法找到指定的物件嗎
例如說$container下第n層的ul之類的語法
又或著有比較簡單易讀的寫法呢
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.184.210
1F:推 s25g5d4:試試看selector用ul:eq(數字) 09/29 19:00
2F:→ s25g5d4:不過eq好像是抓相鄰的... 09/29 19:00
3F:→ s25g5d4:還有.find("ul ul ul li")這個.. 09/29 19:01
4F:→ ThreeDay0905::eq是抓集合中的第幾個 沒法抓到第幾層.. 09/29 19:24
5F:→ ThreeDay0905:用find('ul ul ul li') 09/29 19:26
6F:→ ThreeDay0905:它會連符合('ul ul ul ul ul ul li')都一起抓出來 09/29 19:26
7F:推 s25g5d4:阿find裡面是給你寫seclector的阿 你也可以寫ul>li 09/29 19:47
8F:→ s25g5d4:selector 09/29 19:47
9F:→ tn801534:我回在Web_Design版了 09/29 20:55
10F:→ TonyQ:find ("> ul > ul > ul > li") 這樣就好啦 09/29 21:46
11F:→ TonyQ:我覺得你給了他一個太複雜的結構了,這麼複雜的結構倒不如用 09/29 21:49
12F:→ TonyQ:class來找比較清楚明確,因為 dom tree會變但class不太會變 09/29 21:49
13F:→ ThreeDay0905:謝謝 find('>ul xxxx')是我要找的語法 09/29 22:52
14F:→ ThreeDay0905:現在才知道原來[selector]可以用'>'開頭 受教了 09/29 22:52
15F:→ dlikeayu:>是下一層(不包括下下下下下*n層的任一符合名字的物件) 09/30 03:54