Попытка выбрать тег «body» из html, который возвращается запросом get () - PullRequest
4 голосов
/ 20 октября 2011

Я делаю ajax get call , который возвращает мне содержимое HTML-страницы.Я пытаюсь выбрать содержимое тега body, но мой селектор возвращает пустой объект jquery.

$.get(filename, function(data) {
    console.log($("body", data));
})

где data - содержимое html-файла.

Ответы [ 2 ]

14 голосов
/ 20 октября 2011

jQuery не может выбрать body строки ответа, поскольку тег <body> исчезает при преобразовании строки с использованием $().

Следовательно, вам нужно выбрать тело из dataСтрока по-другому, например, регулярные выражения.Пример:

$.get(filename, function(data) {
    var body = data.replace(/^[\S\s]*<body[^>]*?>/i, "")
                    .replace(/<\/body[\S\s]*$/i, "");
    //Optionally, convert the string to a jQuery object:
    body = $(body);
    console.log(body);
}))

Примечание. Мое регулярное выражение предполагает хорошо сформированный HTML-документ, где > правильно отображаются с использованием HTML-сущностей.Если это не так, следует использовать более продвинутые RegExps, такие как показанные на этот вопрос .

2 голосов
/ 20 октября 2011

jQuery использует объектную модель документа, а не «текст», составляющий эту модель. У вас есть только большой фрагмент текста в элементе данных, который еще не был добавлен в документ.

$(body).html(data);

... при условии, что данные содержат действительный код тела. Если это вся HTML-страница, то вам нужно будет проанализировать ее только для основного содержимого, например, используя indexOf или что-то подобное.

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