вставка XML в DOM приводит к неработающим селекторам классов / идентификаторов - PullRequest
1 голос
/ 08 февраля 2012

Я пытаюсь загрузить XML-файл с помощью ajax и вставить части этого XML-документа DOM в HTML-браузер HTML.

Пока это работает, но когда я пытаюсь получить вставленный элемент сСелектор класса или идентификатора с jquery возвращает пустой список.

Я пробовал это только в Firefox 10.кто-нибудь имеет представление, почему это может быть?это просто небезопасно?

test.html:

<html><head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <title>dom test</title>
  <script type="text/javascript">
    $(function() {
      var xml = null;
      $.ajax({
        type : "GET",
        async : false,
        url : 'test.xml',
        dataType : "xml",
        success : function(data) {
          xml = data;
        }
      });

      $('body').html($(xml).children().clone());

      console.log($('h1')); // prints the h1 element
      console.log($('.title')); // prints empty list

      console.log($('p')); // prints the p element
      console.log($('#content')); // prints empty list
    });      
  </script>
</head><body></body></html>

test.xml:

<div id="root">
  <h1 class="title">Blabla</h1>
  <p id="content">
    Lorem ipsum
  </p>
</div>

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

делает как положено. Можно проверить, предупредив $(xnl).find("h1").text(). Однако не могли бы вы попробовать изменить двойные кавычки на одинарные в вашем xml. и отключение поддержки HTML5 в вашем ff (что тоже может быть проблемой)?

0 голосов
/ 08 февраля 2012

Похоже, вы просто пытаетесь захватить HTML через AJAX и затем вставить его на свою страницу. Для этого вы должны использовать dataType: "html" в своем запросе ajax.

$(function() {
    var html = null;
    $.ajax({
        type : "GET",
        async : false,
        url : 'test.xml',
        dataType : "html",
        success : function(data) {
            html = data;
        }
    });

    $('body').html(html);

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...