2009-06-24 15 views
9

私はAJAX呼び出しから何らかのXMLを取得しています(驚きはありません)。私は何かしたいのですが、特定のノードとそれ以外のものでのみ行います。たとえば、JQueryを使用して、値と等しい属性を持つすべてのノードを取得するにはどうすればよいですか?

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

名前がxのすべてのノードを1つのテーブルに移動し、他のすべてのテーブルを別のテーブルに移動したいとします。

答えて

19

を「x」は特にattributeEquals filter、属性フィルタを使用します。

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

attributeNotEquals filterを使用し、他のすべてのノードを選択するには

これで、jQuery manipulationsを適用して、これらのノードを別の場所に移動できます。

XPathスタイルのセレクタは、バージョン1.2では非推奨であり、jQuery 1.3では完全に削除されています。

サーバーが送信する内容に影響を与えることができる場合は、代わりにJSONを使用するように切り替えることができます。解析が容易な場合があります。

1

あなたはノードを選択するjQueryのでXPathを使用することができますjQueryの受け入れ

$( "//ノード[名@ = 'X']")

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

+0

+1 - 非常に洗練された第二の答え:) – karim79

+0

これまでの作業をありがとうございます。しかし、私はどうしたらいいのですか? – uriDium

+2

xpath構文はjQuery 1.2では廃止されましたが、1.3ではこれ以上機能しません。このページの属性セクションを参照してください:http://docs.jquery.com/Selectors –

1

をxpath式も同様です。

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

は値を持っている「名前」の属性を持つ「ノード」という名前のすべてのノードを選択します

+0

これまでのところとても良いです。私のxpathはひどいです。どのように変更して、name = xのすべてでないかを選択します。 – uriDium

+0

$( 'node [name] [not(name = "x"]') は、名前が 'x'以外のすべてのノードを見つけます。 –

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

    } 
} 
関連する問題