Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能用这个jQuery代码(IE)遍历多个XML节点_Jquery_Xml - Fatal编程技术网

为什么我不能用这个jQuery代码(IE)遍历多个XML节点

为什么我不能用这个jQuery代码(IE)遍历多个XML节点,jquery,xml,Jquery,Xml,我正在使用下面的代码迭代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(){ { //

我正在使用下面的代码迭代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
}
请让我知道我如何才能纠正代码,使这在上述情况下也工作

它在ie9中运行良好

然而,在ie7中,您将需要使用
过滤器
而不是
查找
,因为ie会清除外部元素,所以

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

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

它在ie9中运行良好

然而,在ie7中,您将需要使用
过滤器
而不是
查找
,因为ie会清除外部元素,所以

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

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

示例:

我尝试用HTML元素包装XML文档,在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'); 
});

var xmlDat=“

我尝试用HTML元素包装XML文档,在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'); 
});

var xmlDat=“

请提供XML文档的示例、您得到的结果和您想要得到的结果。显示它应该可以工作。@FelixKling kling它在google Chrome中工作得很完美,但在IE中却不行。我在IE上工作。很抱歉之前没有提到浏览器。请检查这里,顺便说一句,我认为您不应该再次将
xmlDat
传递给jQuery。它应该已经是jQuery对象。我没有IE的访问权限,所以我真的帮不了你,但是你看了吗?@FelixKling刚刚看到了这个问题,这是一个很好的问题。但是,由于我没有从Ajax加载任何数据,我只是在解析一个字符串,我有点困惑,无法将我的问题与提供的答案联系起来。@FelixKling是的,您应该这样做:“然后可以将此文档传递到
jQuery
,以创建一个可以遍历和操作的典型jQuery对象。”
parseXML()
只返回一个标准的XML DOM
文档
。请提供一个XML文档示例、您得到的结果和您想要得到的结果。显示它应该可以工作。@FelixKling kling它在google Chrome中工作得很完美,但在IE中却不行。我在IE上工作。很抱歉之前没有提到浏览器。请检查这里,顺便说一句,我认为您不应该再次将
xmlDat
传递给jQuery。它应该已经是jQuery对象。我没有IE的访问权限,所以我真的帮不了你,但是你看了吗?@FelixKling刚刚看到了这个问题,这是一个很好的问题。但是,由于我没有从Ajax加载任何数据,我只是在解析一个字符串,我有点困惑,无法将我的问题与提供的答案联系起来。@FelixKling是的,您应该这样做:“然后可以将此文档传递到
jQuery
,以创建一个可以遍历和操作的典型jQuery对象。”
parseXML()
只返回标准的XML DOM
文档