Как я могу использовать JQuery, чтобы получить все узлы с атрибутами, равными значению? - PullRequest
9 голосов
/ 25 июня 2009

Я получаю некоторый XML обратно из вызова AJAX (не удивительно), и я хочу сделать что-то, но только на определенных узлах и что-то еще на остальных. Например

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

Я хочу, чтобы все узлы с именем x были в одной таблице, а все остальные - в другой таблице.

Ответы [ 4 ]

19 голосов
/ 25 июня 2009

Использовать фильтр атрибутов, в частности фильтр attributeEquals :

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

Чтобы выбрать все другие узлы, используйте фильтр attributeNotEquals :

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

Затем вы можете применить jQuery манипуляции , чтобы переместить эти узлы в другое место.

Обратите внимание, что селекторы в стиле XPath устарели в версии 1.2 и были полностью удалены в jQuery 1.3.

Если вы можете повлиять на то, что отправляет сервер, вы можете вместо этого переключиться на использование JSON, вам может быть проще разобрать.

7 голосов
/ 25 июня 2009
success: function(xml) {
   $(xml.find('node').each(function(){
    if($(this).attr('name')=='x') {
       //go to one table
    } else {
       //go to another table
    }

   }
}
1 голос
/ 25 июня 2009

jQuery также принимает выражения xpath.

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

выберет все узлы с именем "node" с атрибутом "name", который имеет значение "x"

1 голос
/ 25 июня 2009

Вы можете использовать xpath в jQuery для выбора узлов:

$ ( "// узел [@ имя = 'х']")

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...