【问题标题】:Why I am unable to iterate through multiple XML nodes with this jQuery code(IE)为什么我无法使用此 jQuery 代码(IE)遍历多个 XML 节点
【发布时间】:2011-12-09 08:31:54
【问题描述】:

我正在使用下面的代码来遍历 XML 的多个节点,但它似乎不起作用

var xmlDat = $.parseXML($('#xmlText').val()); 
// Here I am reading an XML content on paste event of xmlText
var xml = $(xmlDat);
var path = xml.find('ProjectID').text();
xml.find('a,b,c,d').each(function(){
{
       // Giving unwanted results
}

但是如果像下面这样使用

xml.find('a').each(function(){
{
       // Giving results
}

请让我知道如何更正代码以使其在上述情况下也能正常工作...

【问题讨论】:

  • 请提供一个XML文档的例子,你得到的结果和你想要得到的结果。 A quick test 表明它应该可以工作。
  • @FelixKling kling 它在谷歌浏览器中完美运行,但在 IE 中却不行。我正在研究 IE。很抱歉之前没有提到浏览器。请在这里查看jsfiddle.net/bUvPB/1
  • 顺便说一句,我认为您不应该再次将 xmlDat 传递给 jQuery。它应该已经是一个 jQuery 对象。我无法访问 IE,所以我真的帮不上什么忙,但是你看过this question吗?
  • @FelixKling 刚刚看到这个问题,这是一个很好的问题。但是由于我没有从 Ajax 加载任何数据,而我只是在解析一个字符串,所以我有点困惑将我的问题与提供的答案相关联。
  • @FelixKling 是的,你应该pass it to jQuery again“然后可以将此文档传递给jQuery,以创建一个可以遍历和操作的典型jQuery对象。” i> parseXML() 只返回一个标准的 XML DOM Document

标签: jquery xml


【解决方案1】:

在 ie9 中运行良好。

然而,在 ie7 中,您将需要使用 filter 而不是 find,因为 ie 会刮掉外部元素,所以 <root><a></a><b></b></root> 实际上会变成 <a></a><b></b>

总之

xml.find('a,b,c,d').each(function(){
{
       // works in modern browsers
}


xml.filter('a,b,c,d').each(function(){
{
       // works in old ie versions
}

此处示例:http://jsfiddle.net/bUvPB/5/

另外,要使相同的代码在所有浏览器中工作,首先将您的 xml 包装在一个虚拟元素中,然后始终使用find,这样您就不需要浏览器嗅探和其他丑陋的工具来跨浏览器兼容.

$('<div></div>').append(xml).find('a,b,c,d')

示例:http://jsfiddle.net/bUvPB/25/

【讨论】:

    【解决方案2】:

    我尝试将 XML 文档包装在 HTML 元素中,它在 IE7 和 IE8 中对我有用。您的原始代码片段在 IE9 和其他浏览器中运行良好。代码如下:

    var xmlDat = "<div><root><a></a><b></b></root></div>";
    var xml = $(xmlDat);
    xml.find('a,b,c,d').each(function(){
        alert('Hi'); 
    });
    

    这里是 jsfiddle 链接http://jsfiddle.net/AyRkX/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-19
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2011-09-11
      相关资源
      最近更新 更多