jQuery find ('# id') не работает с ответом Ajax - PullRequest
0 голосов
/ 07 января 2019

Я получаю некоторые данные через Ajax, и я хотел бы получить содержимое тега из его идентификатора. Я не понимаю, почему это не работает:

$.get('/foo', function (data) {
    console.log('Found', data.match(/<.+\s+id\s*=\s*"display"[^>]+>.*?<\/div>/)[0]);
    console.log($(data).find('#display').length)
})

Я получаю это:

Found <div id="display" data-title="Sandbox" data-display="plain"></div>
0

Таким образом, я могу подтвердить, что мой тег находится в полученных данных, но $(data).find('#display') не находит его.

Почему?

Этот вопрос очень похож на этот один, но он не объясняет, почему он не работает

1 Ответ

0 голосов
/ 07 января 2019

Причина в том, что find смотрит на потомков данного узла (ов).

Обратите внимание, как это даст длину 1:

console.log($(data).filter('#display').length)
//                  ^^^^^^

Кроме того, вы можете обернуть узлы в родительском элементе, и затем выполнить find:

var wrapper = $("<div>").append(data);
console.log(wrapper.find("#display").length); // --> 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...