jQuery 的字符串选择器不适用于 Internet Explorer

发布于 2024-09-26 15:53:04 字数 667 浏览 4 评论 0原文

我使用 jQuery 的 $.get() 进行 ajax 调用,将字符串返回给函数。该字符串包含 xml 和 html,我必须使用 jQuery 的选择器提取 html 的某些部分,例如:

$.get(
    url,
    function (xml) {
        $(xml).find('something').whatever();
    }
);

在这种情况下,Firefox 和 Chrome 一切正常,假设 xml var 是一个字符串(headers text/html确保以 php 发送)。但在 IE 中,它找不到“something”标签。

为什么这不起作用?

更新:

我试图简化问题:

var test = "<hello><world /></hello>";
alert($(test).find('world').length);

这在每个浏览器上都可以正常工作(显示 1),但在 Internet Explorer 中则不然,它显示 0 >(仅在 IE7 上尝试过)。

如何解决此问题而无需更改 XML 中变量的格式?

I make an ajax call with jQuery's $.get() that returns a string to a function. This string contains both xml and html, and I have to extract some part of the html with jQuery's selectors, for example:

$.get(
    url,
    function (xml) {
        $(xml).find('something').whatever();
    }
);

In that case, everything works fine with Firefox and Chrome, assuming that the xml var is a string (headers text/html sent in php to be sure). But in IE, it can't find the "something" tag.

Why doesn't this work?

Update:

I tried to simplify the problem:

var test = "<hello><world /></hello>";
alert($(test).find('world').length);

This is working just fine on every browser (displays 1) but not in Internet Explorer, it displays 0 (only tried on IE7).

How do I fix this problem without having to change the format of the variable in XML?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小红帽 2024-10-03 15:53:04

由于它的 XML 尝试以下内容:

$(xml).contents().find('something').whatever()

这类似于在 Iframe 中访问 DOM

更新:

对 Floren 评论的回答:

$(document).ready(function(){  
  var txt = "<hello><world/></hello>";  
  if (window.DOMParser) {  
   parser=new DOMParser();  
   xmlDoc=parser.parseFromString(txt,"text/xml");  
  }  
  else // Internet Explorer
  {  
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");  
    xmlDoc.async="false";  
    xmlDoc.loadXML(txt);  
  }  
  alert($(xmlDoc).find('world').length);  
});  

要从本地字符串变量解析 XML 字符串,您必须专门为 IE 创建一个解析器对象。 FF 或其他人可能不需要。

但对于 $.ajax 来说,如果 dataType 指定为 xml 那么这个转换会自动完成,我们不必创建 XML 解析器。

Since its XML try the following :

$(xml).contents().find('something').whatever()

This something similar to accessing the DOM within an Iframe <iframe>

UPDATE:

Answer to Floren's comment:

$(document).ready(function(){  
  var txt = "<hello><world/></hello>";  
  if (window.DOMParser) {  
   parser=new DOMParser();  
   xmlDoc=parser.parseFromString(txt,"text/xml");  
  }  
  else // Internet Explorer
  {  
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");  
    xmlDoc.async="false";  
    xmlDoc.loadXML(txt);  
  }  
  alert($(xmlDoc).find('world').length);  
});  

For parsing XML string from a local string variable you would have to create a parser object specifically for IE. It may not be required for FF or others.

But for $.ajax if the dataType is specified as xml then this conversion is done automatically and we don't have to create the XML parser.

涙—继续流 2024-10-03 15:53:04

尝试将 dataType 设置为 html。

$.get(
    url,
    function (xml) {
        $(xml).find('something').whatever();
    },
    'html'
);

Try to set the dataType to html.

$.get(
    url,
    function (xml) {
        $(xml).find('something').whatever();
    },
    'html'
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文