遍历XML元素在IE8中不起作用

时间:2013-11-29 18:06:20

标签: javascript jquery xml internet-explorer-8

我是javascript的新手,但这是我想要做的。请注意,我四处寻找答案,但没有任何帮助。

我正在尝试遍历XML元素,但它在IE8中不起作用。虽然它在Firefox中运行得很好。如果不工作,我的意思是即使有元素,它也不会进入循环。

这是我试图遍历的XML:

var $anXml = $('<node id="anID" inline="0" leaf="true">'
                  +'<sub_node1>Text \(more text\)</sub_node1>'
                  +'<sub_node2>Text \(more text\)</sub_node2>'
             +'</node>');

以下是我用来遍历的代码:

alert('children before loop: ' + $anXml.children.length);
$anXml.children().each(function() {
    alert('child traversed!');
    var $aChild = $(this);
    $anotherXml.data(this.nodeName.toLowerCase(), $aChild.html());
});
alert('children after loop: ' + $anXml.children.length);

以下是警报的输出:

children before loop: 2
children after loop: 2

'孩子穿越了!'永远不会显示。

任何想法都会非常感激。

1 个答案:

答案 0 :(得分:0)

如果$anXml.children.length正在工作,它不是jQuery对象,因为.children是本机元素的属性,而不是jQuery,所以你必须包装它:

$($anXml).children().each(function() {
    alert('child traversed!');
    var $aChild = $(this);
    $anotherXml.data(this.nodeName.toLowerCase(), $aChild.html());
});