2010-02-04 143 views
0

是否有可能找到沒有指定子節點的所有節點?jQuery xml查找沒有特定子節點的節點

例如:

(XML)

<item> 
    <name>item 1</name> 
    <admin>true</admin> 
</item> 

<item> 
    <name>item 2</name> 
    <admin>true</admin> 
</item> 

<item> 
    <name>item 3</name> 
    <parent>item 1</parent> 
    <url></url> 
    <admin>false</admin> 
</item> 

我想挑選出那些沒有子節點 「父」 的所有節點。我能做到這一點,如果我設置一個屬性命名父母打電話:

(jQuery的)

$(xml).find("item:not([parent])").each 

,但我想知道,這是可以通過使用子節點來代替。

回答

2

您可能會得到其他很好的建議 - 可能僅基於選擇器 - 但我相信這會起作用。

$('item').filter(function() { 
    return $(this).find('parent').length === 0; 
}).doSomethingWithTheSetOfItemsWithoutParents(); 

UPDATE

基於selector documentation,我覺得這個人會做你想要什麼:

$('item:not(:has(parent))') 
+0

感謝您的回覆......我忘了提及我能夠使它與類似於您在這裏的東西一起工作,但我希望有一種方法可以通過選擇器來實現它。 – malificent 2010-02-04 18:32:31

+0

啊......完美!謝謝! – malificent 2010-02-04 22:45:20

0

你能用jQuery的本地parent() selector嗎?

+0

實際上,我試圖創建一個彈出按鈕菜單系統。我試圖在沒有定義XML文件的DOM內的菜單層次的情況下進行設置。基本上,如果菜單是彈出式菜單,則它具有父級。如果我嘗試模擬xml文件的DOM結構中的菜單關係(例如,選擇兒童的孩子等),它開始變得太複雜了。在這種情況下,我將無法使用parent()選擇器,因爲最終我想要的實際層次結構不一定反映在DOM中。 – malificent 2010-02-04 18:36:16

+0

我也在這麼做,我可以在需要時重複使用物品。 – malificent 2010-02-04 18:38:26