jQuery XML解析器未获取属性';目录';
我使用jQuery解析通过ajax检索的XML,但是我发现使用实际的XML输入有一个问题/bug 考虑以下示例:jQuery XML解析器未获取属性';目录';,jquery,xml,jquery-xml,Jquery,Xml,Jquery Xml,我使用jQuery解析通过ajax检索的XML,但是我发现使用实际的XML输入有一个问题/bug 考虑以下示例: var$line=$(“示例文本”),dir=$line.attr(“dir”) 控制台信息(“目录:”,目录) 此示例应返回“value”,而不是返回空字符串。使用不同的属性名称尝试上述代码,它返回正确的值 “dir”是无效属性吗?或者这是jQuery中的一个bug?只是想知道…因为我认为它没有被解析,试试这个 var $line = $('<example></
var$line=$(“示例文本”
),dir=$line.attr(“dir”)
控制台信息(“目录:”,目录)代码>
此示例应返回“value”,而不是返回空字符串。使用不同的属性名称尝试上述代码,它返回正确的值
“dir”是无效属性吗?或者这是jQuery中的一个bug?只是想知道…因为我认为它没有被解析,试试这个
var $line = $('<example></example>').attr('dir','value').value('Example Text');
var$line=$('').attr('dir','value').value('Example Text');
$(标记)
解析为HTML,而不是XML,为您提供带有标记名示例的htmlUnknowneElement
dir
是一种仅具有值rtl
或ltr
的类型。其他任何内容都将被忽略,这就是自定义属性在下不可读的原因
(与您对名称的期望相反,jQuery的attr()
方法实际上通常表示DOM属性访问,而不是HTML属性访问,尽管它允许将HTML属性名称用作别名。)
在IE中,您可能会遇到更多的问题,它与将自定义元素放到HTML中不太一样
让浏览器解析XML并不像你想象的那么简单。通过XMLHttpRequest
(ajax()
)返回XML文档在任何地方都可以使用,因此如果可以,请将XML移动到ajax响应中
否则,让XML解析器读取字符串在所有浏览器上都是不一样的(旧浏览器根本无法做到这一点)。在IE上,您必须使用新的ActiveXObject('Microsoft.XMLDOM')
;在其他浏览器上,您通常会得到一个新的DOMParser()
;如果失败,您可以尝试document.implementation.createDocument().loadXML()
dir=$line.get(0)。getAttribute(“dir”)
工作正常
将在jQuery讨论页面中发布此问题。实际上,您的代码对我来说很有用。可能是不同的jQuery版本?我使用的是1.4.2,上面有一点不同:var$line=$('').attr('dir','value').val('Example Text')代码>但结果是相同的。我知道我给出的示例正在被解析,因为更改为:var$line=$('example Text')
会起作用。但是,我无法更改ajax检索到的XML,因此必须坚持使用“dir”属性。