2010-02-04 117 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