0

jQuery を使用して ajax 経由で取得した XML を解析していますが、実際の XML 入力を使用すると問題/バグが見つかりました。

次の例を検討してください。

var $line = $('<example dir="value">Example Text</example>'), dir = $line.attr("dir");
console.info("dir: ", dir);

この例では、空の文字列を返す代わりに「値」を返す必要があります。上記のコードを別の属性名で試したところ、正しい値が返されました。

「dir」は無効な属性ですか? それともjQueryのバグですか?ただ疑問に思っている...

4

3 に答える 3

1

$(markup)XMLではなくHTMLとして解析し、タグ名を付けHTMLUnknownElementますexampledirは、値または。のみを持つ可能性のある既存のHTML属性です。それ以外は無視されます。そのため、DOMプロパティでカスタム属性を読み取ることはできません。rtlltrdir

(名前から予想されることとは反対に、jQueryのメソッドは、HTML属性名をエイリアスとして使用できる場合でも、実際には通常、HTML属性アクセスではなくattr()DOMプロパティアクセスを表します。)

IEでさらに問題が発生する可能性があります。これは、カスタム要素がHTMLにドロップされるのをあまり好まないものです。

ブラウザでXMLを解析するのは、思ったほど簡単ではありません。XMLHttpRequest( )で返されるXMLドキュメントはajax()どこでも機能するため、可能であれば、XMLをAJAX応答に移動します。

それ以外の場合、XMLパーサーに文字列を読み取らせることは、すべてのブラウザーで同じではありません(そして、古いブラウザーではまったく同じではありません)。IEでは、new ActiveXObject('Microsoft.XMLDOM');を使用する必要があります。他のブラウザでは、しばしばnew DOMParser();を取得します。それが失敗した場合は、を試すことができますdocument.implementation.createDocument().loadXML()

于 2010-08-26T10:36:38.943 に答える
1

dir = $line.get(0).getAttribute("dir")うまく動作します。

この問題を jQuery ディスカッション ページに投稿します。

于 2010-08-26T11:35:45.773 に答える
0

解析されるとは思わないので、これを試してください

var $line = $('<example></example>').attr('dir','value').value('Example Text');
于 2010-08-26T10:33:06.917 に答える