jQuery XML 解析器未获取属性“dir”

发布于 2024-09-16 12:25:12 字数 340 浏览 3 评论 0原文

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

考虑以下示例:

var $line = $('Example Text'), dir = $line.attr("dir ”);
console.info("dir: ", dir);

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

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

I'm using jQuery to parse XML which is retrieved via ajax, however I have found a problem/bug with using the actual XML input.

Consider the following example:

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

This example should return 'value' instead it returns an empty string. Tried the above code with a different attribute name and it returns the correct value.

Is 'dir' an invalid attribute? Or is this a bug in jQuery? Just wondering...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

温暖的光 2024-09-23 12:25:12

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

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

dir = $line.get(0).getAttribute("dir") works just fine.

Going to post this issue in the jQuery discussion page.

顾铮苏瑾 2024-09-23 12:25:12

$(markup) 解析为 HTML,而不是 XML,为您提供一个带有 tagName exampleHTMLUnknownElementdir 是一个现有的 HTML 属性< /a> 只能具有值 rtlltr。其他任何内容都会被忽略,这就是为什么自定义属性在 DOM 属性 dir

(与您从名称中所期望的相反,jQuery 的 attr() 方法实际上通常表示 DOM 属性访问而不是 HTML 属性访问,即使它允许 HTML 属性名称用作别名。)

您可能在 IE 中遇到更多问题,因为它不太像将自定义元素放入 HTML 中。

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

否则,让 XML 解析器读取字符串在所有浏览器上都不相同(并且较旧的浏览器根本无法做到这一点)。在 IE 上,您必须使用 new ActiveXObject('Microsoft.XMLDOM');在其他浏览器上,您经常会得到一个new DOMParser();如果失败,您可以尝试 document.implementation.createDocument().loadXML()

$(markup) parses as HTML, not XML, giving you an HTMLUnknownElement with tagName example. dir is an existing HTML attribute which may only have the values rtl or ltr. Anything else is ignored, which is why the custom attribute isn't readable under the DOM property dir.

(Contrary to what you might expect from the name, jQuery's attr() method actually usually represents DOM property access and not HTML attribute access, even though it allows the HTML attribute names to be used as aliases.)

You may have further problems in IE which doesn't much like custom elements being dropped into HTML.

Getting a browser to parse XML isn't quite as simple as you might think. Having an XML document returned by XMLHttpRequest (ajax()) works everywhere, so if you can, move the XML into an AJAX response.

Otherwise, getting an XML parser to read a string isn't the same on all browsers (and older browsers can't do it at all). On IE you have to use a new ActiveXObject('Microsoft.XMLDOM'); on other browsers you often get a new DOMParser(); failing that, you can try to document.implementation.createDocument().loadXML().

九歌凝 2024-09-23 12:25:12

因为我认为它没有被解析,所以尝试这个

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

because i dont think it gets parsed, try this

var $line = $('<example></example>').attr('dir','value').value('Example Text');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文