2010-05-16 159 views
0

我有一個樹形結構,那裏有一個無序列表(ul),它裏面有li項目,在那個項目裏它可能是一個span或ul列表。找到jquery中的孩子

這是我的代碼中的一個部分:

  <li id="main_li"> 
       <div class="first_division"></div> 
       <span>products</span> 
       <ul style="display: block;"> 
        <li> 
         <div class="division1"></div> 
         <span>products_cat_1</span> 
         <ul style="display: none;"> 
          <li> 
           <span>products_cat_1_milk</span> 
          </li> 
         </ul> 
        </li>     
        <li> 
         <span>products_yoghurt</span> 
        </li>     
        <li> 
         <span>products_butter</span> 
        </li> 
       </ul> 
      </li> 

我想在UL標籤訪問li元素在父李ID爲「main_li」,我想它由內點擊跨度完成李。

我該如何做到這一點與jQuery的?

回答

1

的li元素下ULS其母公司是相匹配的CSS選擇器「main_li」是

#main_li > ul > li 

進一步下面評論:

要訪問UL是一個同級的跨度,你想要next()選擇器。如果您在跨度點擊處理程序是,跨度會this

var siblingUL = $(this).next('ul'); 
+0

我想在UL li元素被點擊其中其父李。 我的意思是當我點擊「products_cat_1」時,如何使用jquery訪問「products_cat_1_milk」? – 2010-05-16 06:43:36

1

附加一個單擊處理程序相關<span>。在處理函數中,使用tree traversal方法導航到感興趣的節點。

可能有用這裏的一些選擇:

​​

例)

$("#main_li > span") 
// selects: 
// <span>products</span> 

$("#main_li span") 
// selects: 
// <span>products</span> 
// <span>products_cat_1</span> 
// <span>products_cat_1_milk</span> 
// <span>products_yoghurt</span> 
// <span>products_butter</span> 

假設你附上<span>products</span>點擊處理程序,並單擊處理中要導航到所有<li>兒童你可以這樣做:

$("#main_li > span").click(function() { 
    $(this).siblings("ul").children("li").each(function() { 
     // do something with each <li> 
    }); 
}); 
+0

非常感謝你的朋友,我的問題是通過你的推薦解決的:) 真的非常感謝 – 2010-05-16 06:53:41

+0

不客氣,很高興幫助。乾杯! – Anurag 2010-05-16 07:14:13

0

如果您有多個LIs', you should use arather than ID eg#main_li`

$(function(){ 
    $('.main_li span').click(function(){ 
    $(this).parents('.main_li').find('li').each(function(){ 
     // your further code here.... 
    }); 
    }); 
});