Селекторы jQuery для строки не работают для Internet Explorer - PullRequest
1 голос
/ 11 октября 2010

Я делаю Ajax-вызов с $.get() в jQuery, который возвращает строку функции.Эта строка содержит как xml, так и html, и мне нужно извлечь некоторую часть html с помощью селекторов jQuery, например:

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

В этом случае все работает нормально с Firefox и Chrome, при условии, что xmlvar - это строка (заголовки text / html отправляются в php, чтобы быть уверенным).Но в IE он не может найти тег «что-то».

Почему это не работает?

Обновление:

Я пыталсяЧтобы упростить задачу:

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

Это работает нормально на всех браузерах (отображает 1), но не в Internet Explorer, отображает 0 (только для IE7).

Как исправить эту проблему, не меняя формат переменной в XML?

Ответы [ 2 ]

2 голосов
/ 11 октября 2010

Поскольку его XML, попробуйте следующее:

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

Это что-то похожее на доступ к DOM в Iframe <iframe>

ОБНОВЛЕНИЕ:

Ответ на комментарий Флорена:

$(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.

1 голос
/ 11 октября 2010

Попробуйте установить для dataType значение html.

$.get(
    url,
    function (xml) {
        $(xml).find('something').whatever();
    },
    'html'
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...