2011-01-12 12 views
0

Ist es notwendig, die zweite Zeile hier zu verwenden?Parsing XML mit jQuery

$("message",xml).each(function(id) { 
    message = $("message",xml).get(id); 
    msgID = $("msgID",message).text(); 

Gibt es nicht eine Art "dieses" Schlüsselwort, um die zweite Zeile zu eliminieren?

Danke!

Antwort

3
$('message', xml).each(function() { 
    var msgID = $(this).find('msgID').text(); 
} 

Unter der Annahme, diese Struktur:

<root> 
    <message> 
     <msgID>123</msgID> 
    </message> 
    <message> 
     <msgID>234</msgID> 
    </message> 
    <message> 
     <msgID>345</msgID> 
    </message> 
</root> 
+0

Können Sie einfach this.find schreiben, ohne das jQuery-Symbol und die Klammern zu verwenden? –

+0

@Michael Nein, weil das Schlüsselwort 'this' sich auf das XML-Knotenobjekt bezieht (oder wie immer es benannt ist), aber' find() 'ist eine jQuery-Methode und kann nur für jQuery-Objekte aufgerufen werden. –

+0

Nun, es ist eine gute Übung, '$ (this)' in einer Variablen zu erfassen. Wie 'var $ this = $ (this);' ... – Reigel

1

Wenn Sie in an .each() sind, this das aktuelle Element in der Iteration darstellen.

Die .each() gibt Ihnen auch 2 Parameter. Die erste ist die aktuelle Indexnummer der Iteration, und die zweite ist das Element in der Iteration, gleich this.

$("message",xml).each(function(idx, val) { 
    // in here, "this" is the current "message" node in the iteration 
    // "i" is the current index in the iteration 
    // "val" is the same as "this" 
}); 

Wenn Sie $("message",xml) tun, suchen Sie "message" Knoten, die verschachtelte unter den Knoten an der Spitze der xml sind. Wenn irgendwelche gefunden wurden, wird die .each() über sie iterieren.