Frage

Ich versuche, den Inhalt eines XML-Dokument Element zu erhalten, aber das Element hat einen Doppelpunkt in seinem Namen.

Diese Zeile funktioniert für jedes Element aber die, die mit einem Doppelpunkt im Namen:

$(this).find("geo:lat").text();

Ich gehe davon aus, dass der Doppelpunkt Bedürfnisse zu entkommen. Wie kann ich dieses Problem beheben?

War es hilfreich?

Lösung

Verwenden Sie einen umgekehrten Schrägstrich, der sich so JavaScript entgangen sein sollte es nicht essen:

$(this).find("geo\\:lat").text();

Andere Tipps

Das ist nicht nur ein gewöhnlicher Elementname. Das ist ein qualifizierter Name, was bedeutet, dass es ein Name ist, der innerhalb eines Namespace zu einem Elementtyp bezieht sich speziell. Der Elementtyp Name ist ‚lat‘ und der Namespace-Präfix ist ‚Geo‘.

Im Moment können jQuery befasst sich nicht sehr gut mit Namespaces finden Sie unter bug 155 für Details .

Im Moment, da dieses Problem zu umgehen, sollten Sie diese Elemente nur mit dem lokalen Namen auswählen können:

$(this).find("lat").text();

Wenn Sie zwischen Elementtypen mit dem gleichen lokalen Namen zu unterscheiden, dann können Sie filter() verwenden:

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("lat").filter(function() { return this.namespaceURI == NS; }).text();

Edit: mein Fehler, ich hatte den Eindruck, dass Patch gelandet war bereits. Verwenden Sie Adams Vorschlag für die Wähler und filter(), wenn Sie das Namespacing brauchen auch:

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("geo\\:lat").filter(function() { return this.namespaceURI == NS; }).text();

Wenn Sie ein jQuery-Selektor Problem mit Chrom oder webkit nicht der Auswahl es versucht

$(this).find('[nodeName=geo:lat]').text();

Auf diese Weise funktioniert es in allen Browsern

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top