Das ist nicht nur ein gewöhnlicher Elementname ist. Dies ist ein qualifizierter Name. Dies bedeutet, dass es sich um einen Namen handelt, der sich speziell auf einen Elementtyp innerhalb eines Namespace bezieht. Der Name des Elementtyps ist "lat" und das Namespacepräfix ist "geo".
Momentan kann jQuery nicht sehr gut mit Namespaces umgehen, siehe bug 155 für Details.
Gerade jetzt, wie dieses Problem zu umgehen, sollen 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 verwenden filter()
:
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 hatte Patch bereits gelandet. 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();
Dies funktioniert nicht in Chrome :( – vaske
@Vaske, ich sah das Gleiche in Chrome mit einer der neuesten Versionen von jQuery. Verwenden Sie die zweite Hälfte des Knotens Name nach dem Doppelpunkt arbeitete für mich. Benutzte '.find (" lat ")' anstelle von '.find (" geo \\: lat ")' und es funktionierte für mich. –
@Mike ja, das hilft, aber ich hatte Namespace-Problem, generelles Problem mit meinem zurückkehrenden XML, dass es enthält