2011-08-14 76 views
4

一直在谷歌搜索和試錯的一個小時,試圖拿出一個jQuery選擇器來訪問可擴展樹中的幾個標籤元素之一。在HTML或者是這樣的:jquery選擇器找到一個子元素與

<span id="ppown" class="treeTitleSpan" role="leaf">PPO</span> 
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon' /> 

或者這樣:

<span id="ppw" class="treeTitleSpan" role="leaf">Other</span> 
<span class="handle closed"></span> 
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon' /> 

,我來自在每種情況下.treeTitleSpan跨度開始(在點擊處理程序)。我知道我可以訪問一個具有:

$(this).next().next().children('.nodeCheckIcon'); 

,並與其他:

$(this).next().children('.nodeCheckIcon'); 

但我想一個選擇,會爲這兩種情況下工作,「發現」似乎並沒有工作:

$(this).find('.nodeCheckIcon:first') 

任何幫助,將不勝感激。

裏克

回答

0
$(this).nextAll('.treeCheckBoxLabel').children('.nodeCheckIcon'); 

或者你可能有多個標籤,如:

<span id="ppw" class="treeTitleSpan" role="leaf">Other</span> 
<span class="handle closed"></span> 
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon' /> 
</span> 
<span class="treeCheckBoxLabel"> 
    <label class='nodeCheckIcon' /> 
</span> 

而你只想要第一個:

$(this).nextAll('.treeCheckBoxLabel').first().children('.nodeCheckIcon'); 
+0

也可以,謝謝。 – at7000ft

0

如何像這樣:

$(this).nextAll('.treeCheckBoxLabel:first').children('.nodeCheckIcon'); 

使用:first可確保您最多隻能選擇一個.treeCheckBoxLabel,根據您的HTML其餘部分,這可能是也可能不是問題。

+0

這很好,謝謝你。 – at7000ft

0

替代其他職位(許多方法來皮膚貓:))

$(this).siblings(".treeCheckBoxLabel:has(label.nodeCheckIcon):first") 
0

由於this是指向span元件,它的label母的兄弟姐妹,$(this).find('.nodeCheckIcon:first')是行不通的。我不知道你的完整的標記結構,但如果你有這個跨度元素的包裝容器,那麼你可以試試這個

$(this).parent().find('.nodeCheckIcon:first');