jQuery () в правильно сформированной строке HTML приводит к синтаксической ошибке, нераспознанному выражению

У меня есть полный HTML-документ, который я загружаю с $.ajax() и моим .done() обратный вызов выглядит следующим образом:

function (data, text_status, jq_xhr) {
  var $what_i_want = $(data).find('#what-i-want');
}

где data - строка, содержащая весь правильно сформированный HTML-документ. Этот код никогда не достигает .find().

После $(data) я получаю:

`Uncaught Error: Syntax error, unrecognized expression: <!DOCTYPE html>`...

Факты:

  • Я использую jQuery 1.9.0
  • Документ является правильно сформированным HTML5 в соответствии с валидатором W3C.

Я использовал jQuery() для объективизации многих строк HTML, поэтому я удивлен, что это не работает. Правда, я не помню, чтобы когда-либо пробовал целый документ. Учитывая ошибку, я думаю, возможно, мне нужно как-то избежать этой строки. Но я не уверен, как.

Кстати, это работает :

var $what_i_want = $('#what-i-want', $.parseHTML(data))

Но я не могу понять, почему первый подход терпит неудачу.

10 голосов | спросил Dmitry Minkovsky 27 FebruaryEurope/MoscowbWed, 27 Feb 2013 07:04:45 +0400000000amWed, 27 Feb 2013 07:04:45 +040013 2013, 07:04:45

2 ответа


0

DOCTYPE не является обычным HTML-тегом; Я думаю, что это должно быть удалено.

Также могут возникнуть проблемы с body, поскольку вы не можете встроить целый документ в другой. IIRC - внутренний метод в jquery - просто создает span на лету и обновляет innerHTML.

ответил Kevin Seifert 27 FebruaryEurope/MoscowbWed, 27 Feb 2013 07:12:57 +0400000000amWed, 27 Feb 2013 07:12:57 +040013 2013, 07:12:57
0

У меня была такая же проблема в случае, когда она работала над всеми другими страницами. Ключом для меня было чтение ссылки Брайана на руководство по обновлению. Проблема заключалась в том, что на этой странице раньше была одна пустая строка, поэтому, хотя я пытался вставить только часть возвращенного HTML, он не рассматривал возвращаемые данные как HTML. Из руководства по обновлению

  

Начиная с версии 1.9 строка считается HTML, только если она начинается с символа, меньшего ("<").

Поскольку он начинался с пустой строки, а не <это не считалось HTML. Думаю, я бы добавил этот вклад, так как потратил целую вечность, пытаясь выяснить, в чем проблема.

ответил Phil 14 AMpSun, 14 Apr 2013 01:19:03 +040019Sunday 2013, 01:19:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132