3

を使用して XML ドキュメントを jQuery にロードします$xml = $(xmldoc)。次に、 でフィルタリングし$xml.filter('id="something"')ます。フィルタリングされた xml で使用.index()すると、jQuery は、フィルタリングされたリストではなく、元のリストのインデックスを返します。

例:

<xmlroot>
  <xmlnode id="1" color="blue" />
  <xmlnode id="2" color="orange" />
  <xmlnode id="3" color="blue" />
  <xmlnode id="4" color="orange" />
  <xmlnode id="5" color="blue" />
</xmlroot>

    vObject = $xml.filter('[color="orange"]'); //vObject should just receive the xmlnodes 2 and 4
    vResult = vObject.filter('[id="4"]').index();

vResult は常に 3 ですが、1 にする必要があります。

この jQuery の動作が設計によるものであることはわかっていますが、すべての xml ではなく、フィルター処理された xml で vObject を埋めるソリューションが必要です。私は一晩中試しましたが、アイデアがありません。

ここの専門家の一人が助けてくれたら、とてもうれしいです。ありがとう!

4

1 に答える 1

2

jQuery コレクション内の要素のインデックスを取得する場合は、要素をindexメソッドに渡す必要があります。

var vResult = vObject.index(vObject.filter('[id="4"]')); // 1    
           // vObject.index(vObject.filter('[id="2"]')); // 0
           // vObject.index(vObject.filter('[id="3"]')); // -1

http://jsfiddle.net/C9Nyg/

于 2012-12-22T05:18:35.897 に答える