如何使用JQuery获取所有属性等于某个值的节点?

10

我从AJAX调用中获取一些XML(不意外),我想对某些节点执行某些操作,而对其余节点执行其他操作。例如:

<xml>
  <node name="x">
  </node>
  <node name="x">
  </node>
  <node name="y">
  </node>
  <node name="z">
  </node>
</xml>

我希望所有名称为x的节点都放在一个表中,而其他节点则放在另一个表中。
4个回答

21
使用属性筛选器,特别是属性等于过滤器
$("node[name='x']");

要选择所有其他节点,请使用attributeNotEquals过滤器


To select all the other nodes, use the attributeNotEquals filter.
$("node[name!='x']");

您可以使用jQuery 操作来移动这些节点。

请注意,XPath样式选择器在版本1.2中已被弃用,并在jQuery 1.3中完全删除。

如果您可以影响服务器发送的内容,建议改用JSON,因为它更容易解析。


8
success: function(xml) {
   $(xml.find('node').each(function(){
    if($(this).attr('name')=='x') {
       //go to one table
    } else {
       //go to another table
    }

   }
}

2

2
xpath语法在jQuery 1.2中已被弃用,在1.3中完全不再起作用,请参见此页面上的属性部分:http://docs.jquery.com/Selectors。 - Martijn Pieters

2

jQuery同样接受xpath表达式。

$('node[name="x"]')

将选择所有名为"node"且具有属性"name"且值为"x"的节点。


到目前为止还不错。我的xpath很糟糕。我该如何修改它以选择除name=x之外的所有内容? - uriDium
$('node[name][not(name="x"]') 将查找所有名称不等于 'x' 的节点。 - Scott Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接