为什么 jQueryeach() 不能在 Internet Explorer 中触发?

发布于 2024-10-01 19:19:18 字数 494 浏览 3 评论 0原文

我有一个带有以下 XML 的变量 result

<Properties>
    <Property>
        <Name>Title</Name>
    </Property>
</Properties>

然后我将 jQuery 1.4.3 与 each() 一起使用:

$('Property', result).each(function () {
    var name = $('Name', this).text();
    alert("Name: " + name);
});

由于某种原因,此代码在 IE8 下不会触发它在 Firefox 3.6 和 Chrome 7 上运行良好。我试图找到这种情况的错误报告,但只发现旧版 jQuery 的问题。

有什么想法吗?

I have a variable result with the following XML:

<Properties>
    <Property>
        <Name>Title</Name>
    </Property>
</Properties>

I'm then using jQuery 1.4.3 with each():

$('Property', result).each(function () {
    var name = $('Name', this).text();
    alert("Name: " + name);
});

For some reason this code isn't firing under IE8 however it works fine on Firefox 3.6 and Chrome 7. I've tried to find a bug report for this case but only found issues with older jQuery versions.

Any ideas?

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

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

发布评论

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

评论(3

一瞬间的火花 2024-10-08 19:19:18

这是由 IE 中的错误引起的:

if ((properties.length == 0) && (jQuery.browser.msie)) {
    // IE screwing up
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.loadXML(result);
    result = xmlDoc;
    properties = $('Property', result);
}
properties.each(function () {
    var name = $('Name', this).text();
    alert("Name: " + name);
});

好消息 - IE9 中不会发生这种情况。 (感谢这个答案)。

This is caused by a bug in IE:

if ((properties.length == 0) && (jQuery.browser.msie)) {
    // IE screwing up
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.loadXML(result);
    result = xmlDoc;
    properties = $('Property', result);
}
properties.each(function () {
    var name = $('Name', this).text();
    alert("Name: " + name);
});

Good news - it doesn't occur in IE9. (Thanks to this SO answer).

迷乱花海 2024-10-08 19:19:18

在 IE 中,xml 字符串必须是对象,而其他浏览器允许字符串类型。

我遇到了同样的问题,我使用ajax获取xml数据,直到我在ajax函数中添加数据类型之前,每个数据都无法在IE8中工作:

$.get('http://url', {'a': 0, 'b': 1}, function(data) {), 'xml');

上面的工作正常,而下面的失败:

$.get('http://url', {'a': 0, 'b': 1}, function(data) {));

In IE an xml string must be an object while the other browsers allow string type.

I had the same problem, I was getting xml data with ajax and each didn't work in IE8 until I added data type in ajax function:

$.get('http://url', {'a': 0, 'b': 1}, function(data) {), 'xml');

The above worked fine while the below failed:

$.get('http://url', {'a': 0, 'b': 1}, function(data) {));
幸福不弃 2024-10-08 19:19:18

为什么不使用 jQuery.XSLT 插件?我相信它在所有支持 jQuery 的浏览器中都表现良好

Why not use jQuery.XSLT plugin? It works great in all browsers where jQuery works I believe

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文