2010-08-26 65 views
0

我正在使用jQuery解析通過ajax檢索到的XML,但是我發現使用實際的XML輸入存在問題/錯誤。jQuery XML解析器沒有獲取屬性'dir'

考慮下面的例子:

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

這個例子應該返回「值」而是返回一個空字符串。使用不同的屬性名稱嘗試上述代碼,並返回正確的值。

'dir'是一個無效的屬性?或者這是jQuery中的錯誤?只是想知道...

+0

其實你的確切代碼適合我。 – adamse 2010-08-26 10:35:11

+0

也許是不同的jQuery版本?我使用1.4.2 – vitorhsb 2010-08-26 10:45:35

回答

1

dir = $line.get(0).getAttribute("dir")工作得很好。

將在jQuery討論頁面發佈此問題。

0

,因爲我不認爲它被解析,試試這個

var $line = $('<example></example>').attr('dir','value').value('Example Text'); 
+0

嘗試上述具有微小差別: '變量$線= $( ' ').attr(' DIR', '值')VAL( '實施例文本');' 但結果是一樣的。我知道我給的例子中被解析,因爲改變到: '變量$線= $(「<示例方向=‘值’>實施例文本」)' 會工作。 但是我不能改變ajax檢索的XML,所以必須堅持'dir'屬性。 – vitorhsb 2010-08-26 10:41:44

1

$(markup)解析爲HTML,XML不,給你的tagName exampleHTMLUnknownElementdirexisting HTML attribute,它可能只有值rtlltr。其他任何內容都會被忽略,這就是爲什麼自定義屬性在DOM property dir下不可讀的原因。

(相反,你可能會從名稱的期望,jQuery的attr()方法實際上通常代表DOM屬性訪問和 HTML屬性的權限,儘管它允許HTML屬性作爲別名名稱。)

您可能在IE中遇到更多問題,這與自定義元素被放入HTML中不太相像。

獲取瀏覽器解析XML並不像你想象的那麼簡單。由XMLHttpRequestajax())返回的XML文檔無處不在,所以如果可以,請將XML移動到AJAX響應中。

否則,得到一個XML解析器讀取一個字符串是不一樣的所有的瀏覽器(和老的瀏覽器不能做到這一點的話)。在IE上,你必須使用new ActiveXObject('Microsoft.XMLDOM');在其他瀏覽器上,你經常會得到一個new DOMParser();否則,你可以嘗試document.implementation.createDocument().loadXML()