Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery XML解析器未获取属性';目录';_Jquery_Xml_Jquery Xml - Fatal编程技术网

jQuery XML解析器未获取属性';目录';

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></

我使用jQuery解析通过ajax检索的XML,但是我发现使用实际的XML输入有一个问题/bug

考虑以下示例:

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”属性。