【发布时间】:2012-11-15 01:05:00
【问题描述】:
我从服务器获取 XML 响应并在 jquery(Chrome 23.0.1271.64 和 Firefox 15.01 上的 jQuery 1.8.2)中解析它以获取各种属性。 3 次中有 2 次按计划工作,但第三次, attr() 调用返回整个元素而不是 attr 值。
举个例子:
$(xmlData).find("template").attr("largeBlockFirst")
返回一个节点数组,其中一个条目的 tagName 为模板,而
$(xmlData).find("template").get(0).getAttribute("largeBlockFirst")
返回一个字符串。
我的理论是,由于某种原因,xmlData 中有一些不同的东西,我无法仅通过序列化它来查看。在每种情况下,我的方法都由 ajax 调用上的成功回调调用。每个响应的内容类型都是 text/xml(总是相同的 url,但以防我每次都检查类型)。
任何想法可能导致 xml 被不同地解析?
【问题讨论】:
-
你能在 jsfiddle.net 上创建一个例子吗(我想使用一串 xml)
-
我不确定我能不能。问题是相同的代码响应不同,我无法确定它运行的环境(参数或上下文)有什么不同。你知道这两个返回如此不同答案的任何情况吗?
-
不,据我了解,
.attr()无论如何都应该返回一个字符串。 -
嗯,我有新信息,但这真的很奇怪。两种情况的不同之处在于,在一种情况下,我打开了一个 tinymce 编辑器,提取了它的数据并关闭了它。该数据与我从服务器检索的数据无关,但由于某种原因,当我调用 .attr("x") 时,它正在调用 tinyMCE 的 attr 函数。这几乎听起来像是某种命名空间污染......