Javascript 使用Jquery对IE7+;还有Mozilla

Javascript 使用Jquery对IE7+;还有Mozilla,javascript,jquery,xml,internet-explorer,jquery-xml,Javascript,Jquery,Xml,Internet Explorer,Jquery Xml,我一直在开发一个web应用程序,需要在jquery中解析xml。我正在构建我的web应用程序,以便在IE7到IE10以及mozilla中工作。我想迭代到我的xml,所以我写了下面的代码 <script type='text/javascript' src="jquery/jquery-1.7.1.min.js"></script> <script type="text/javascript" language="javascript">

我一直在开发一个web应用程序,需要在jquery中解析xml。我正在构建我的web应用程序,以便在IE7到IE10以及mozilla中工作。我想迭代到我的xml,所以我写了下面的代码

<script type='text/javascript' src="jquery/jquery-1.7.1.min.js"></script>

    <script type="text/javascript" language="javascript">
        var xml = '<root><cell id="1"> </cell><cell id="2"> </cell></root>';       
        //works in ie7
        $(xml).filter("cell").each(function () {
            alert('ie'+$(this).attr('id'));
        });
       //works in mozilla
        $(xml).find('cell').each(function () {
            alert('mozilla'+$(this).attr('id'));
        });
    </script>

var xml='';
//在ie7工作
$(xml).filter(“单元格”).each(函数(){
警报('ie'+$(this.attr('id'));
});
//在mozilla工作
$(xml).find('cell').each(函数(){
警报('mozilla'+$(this.attr('id'));
});
但我发现,我需要编写不同的循环机制,以便针对不同的浏览器从xml获取数据。这有点奇怪,因为我正在使用Jquery,所以它应该与所有浏览器兼容


那么,有没有更好的读取xml的方法可以在所有浏览器中使用,这样我就不必编写浏览器检查代码了?

不要使用jQuery的主
$()
函数来解析xml。它试图使用HTML元素的内置
innerHTML
属性将XML解析为HTML,该属性工作不正常,但足以让人们产生错误的安全感。改用:


我认为,因为$(xml)是HTML DOM,而不是一个真正的xml文档,IE不会识别诸如root和cell之类的标记,这可能解释了为什么IE不会将它们视为标记而在IE上查找()会失败。@gillesc这并没有解释为什么
.filter()
会在IE中工作。但在IE7中,它似乎正在剥离根节点,并返回一个只包含子元素的jQuery对象(单元格节点)。首先尝试调用
$.parseXML(xml)
,然后将结果传递给jQuery对象:
var xmlDoc=$.parseXML(xml)$查找('cell')。每个(…)@AnthonyGrist您的逻辑运行得非常好,我刚检查过。谢谢我的兄弟。但是jquery在其最新版本中不应该处理这个问题吗?@thinkmmk如果您将字符串传递给
jquery()
(或
$()
)函数,它会尝试将其解析为HTML,因为这是它的设计目的。对于他们来说,没有简单的方法来检查您传递的字符串是否实际上是XML,并将其解析为XML,这就是为什么他们提供了一个完全独立的函数(
jQuery.parseXML()
)来执行此操作。这取决于您是否使用HTML或XML,并使用相应提供的函数。
var xmlDoc = $.parseXML(xml);

$(xmlDoc).find("cell").each(function () {
    alert( $(this).attr('id') );
});