2011-02-10 66 views
2

我已经搜索了一下,但我无法完全找到解决此问题的好方法。 IE的开发者工具在这方面也没有太多帮助。jQuery的问题.find()。在Internet Explorer 8中的长度

$(data).find('Ticket').length; 

代码返回,例如,数字3

相同的代码在互联网返回0:

此代码为一个XML文档通过在Safari Ajax的工作原理,Chrome和Firefox返回Explorer 8.为什么?

我毫不怀疑有一个简单的解释,其中包括a)IE quirk或b)其他浏览器原谅的代码中的错误。

+2

`find`需要一个选择器,这是一个xml文档吗?你在使用自定义标签吗? – 2011-02-10 01:26:32

+2

什么是'Ticket`? – BoltClock 2011-02-10 01:27:45

+0

http://www.w3schools.com/jsref/jsref_length_string.asp ---有部分浏览器支持,并且所有主流浏览器都支持length属性。 – 2011-02-10 02:43:58

回答

0

试用$(data).find('ticket').size()。这将返回与$(data).find('ticket').length

0

相同的结果编辑:下一个答案。

尝试

$('Ticket', data).length; 

IE抓住XML不同于其他浏览器,Firefox和Chrome,警报($数据),看它是否是空的

在IE
3

发现行不通的自定义标签(XML),除非您构建一个ActiveX对象

假设变量“XML”是什么,是从您的请求返回的XML

var data; 

    if ($.browser.msie) 
    { 
     data = new ActiveXObject("Microsoft.XMLDOM"); 
     data.async = false; 
     data.loadXML(xml); 
    } 
    else 
    { 
     data = xml; 
    } 
    //your code here 
0

首先,find()确实在IE8的工作其实,虽然也许它没有回到2011年2月

在任何情况下,我今天正好有这个问题,对我来说它是由原始的Ajax请求导致的:我有dataType: 'html'而不是dataType: 'xml'

这是一个愚蠢的错误,但值得检查。