XMLドキュメント要素のコンテンツを取得しようとしていますが、要素の名前にコロンが含まれています。
この行は、名前にコロンが含まれている要素を除くすべての要素で機能します。
$(this).find("geo:lat").text();
結腸は逃げる必要があると思います。これを修正するにはどうすればよいですか?
XMLドキュメント要素のコンテンツを取得しようとしていますが、要素の名前にコロンが含まれています。
この行は、名前にコロンが含まれている要素を除くすべての要素で機能します。
$(this).find("geo:lat").text();
結腸は逃げる必要があると思います。これを修正するにはどうすればよいですか?
バックスラッシュを使用します。バックスラッシュ自体はエスケープして、JavaScriptがそれを食べないようにする必要があります。
$(this).find("geo\\:lat").text();
それは単なる要素名ではありません。これは修飾名であり、名前空間内の要素の型を具体的に参照する名前であることを意味します。要素の型名は「lat」で、名前空間のプレフィックスは「geo」です。
現在、jQuery は名前空間をうまく処理できません。詳細については、バグ 155を参照してください。
現在、回避策として、ローカル名だけでこれらの要素を選択できるはずです。
$(this).find("lat").text();
同じローカル名を持つ要素タイプを区別する必要がある場合は、次を使用できますfilter()
。
var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("lat").filter(function() { return this.namespaceURI == NS; }).text();
編集:私の間違いです。私は、パッチが既にリリースされているという印象を受けていました。セレクターに Adam の提案を使用filter()
します。名前空間も必要な場合は、次のようにします。
var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("geo\\:lat").filter(function() { return this.namespaceURI == NS; }).text();
chromeまたはwebkitでjqueryセレクターの問題が発生した場合は、それを選択しないでください。
$(this).find('[nodeName=geo:lat]').text();
このようにして、すべてのブラウザで機能します