jQuery XML解析器未获取属性'dir'

时间:2010-08-26 10:31:05

标签: jquery xml jquery-xml

我正在使用jQuery来解析通过ajax检索的XML,但是我发现使用实际的XML输入存在问题/错误。

考虑以下示例:

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

此示例应返回“value”,而不是返回空字符串。尝试使用不同的属性名称上面的代码,它返回正确的值。

'dir'是无效属性吗?或者这是jQuery中的错误?只是想知道...

3 个答案:

答案 0 :(得分:1)

$(markup)解析为HTML而不是XML,为您提供带有tagName HTMLUnknownElement的{​​{1}}。 exampleexisting HTML attribute,可能只有dirrtl。其他任何内容都会被忽略,这就是DOM property dir下无法读取自定义属性的原因。

(与您对该名称的期望相反,jQuery的ltr方法实际上通常表示DOM属性访问和 HTML属性访问,即使它允许HTML属性名称为用作别名。)

在IE中可能还有其他问题,因为自定义元素不会被放入HTML中。

让浏览器解析XML并不像你想象的那么简单。由attr()XMLHttpRequest)返回的XML文档可以在任何地方使用,因此如果可以,请将XML移动到AJAX响应中。

否则,让XML解析器读取字符串在所有浏览器上都不一样(旧版浏览器根本不能这样做)。在IE上你必须使用ajax();在其他浏览器上,您经常会得到new ActiveXObject('Microsoft.XMLDOM');如果不这样做,你可以尝试new DOMParser()

答案 1 :(得分:1)

dir = $line.get(0).getAttribute("dir")效果很好。

将在jQuery讨论页面中发布此问题。

答案 2 :(得分:0)

因为我不认为它会被解析,试试这个

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