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

时间:2009-06-24 20:32:39

标签: jquery xml

我从AJAX调用中获取了一些XML(毫不奇怪),我想做一些事情,但只在某些节点上做其他事情。例如

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

我希望名称为x的所有节点都转到一个表格,我希望所有其他节点转到另一个表格。

4 个答案:

答案 0 :(得分:19)

使用属性过滤器,尤其是attributeEquals filter

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

要选择所有其他节点,请使用attributeNotEquals filter

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

然后,您可以应用jQuery manipulations将这些节点移动到其他位置。

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

如果您可以影响服务器发送的内容,您可能希望切换到使用JSON,您可能会发现它更容易解析。

答案 1 :(得分:7)

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

   }
}

答案 2 :(得分:1)

您可以在jQuery中使用xpath来选择节点:

  

$( “//节点[@名称= 'X']”)

http://docs.jquery.com/DOM/Traversing/Selectors

答案 3 :(得分:1)

jQuery也接受xpath表达式。

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

将选择名为“node”的所有节点,其属性为“name”,其值为“x”