jquery не может найти div по id - PullRequest
2 голосов
/ 09 января 2011

У меня есть вызов ajax, и я пытаюсь проанализировать возвращенную страницу для #viewport, таким образом удаляя верхний и нижний колонтитулы возвращаемой страницы.но find () не может найти div.

моя исходная функция:

        function(event) {
            $.ajax({
                type: this.method,
                url: this.action,
                data: $(this).serialize(),
                datatype: "html",
                success: function(data) {
                    alert(data);
                    var respHTML = $(data).find("#viewport");
                    alert(respHTML.length);
                    $("#contacts_sidebar").html(respHTML);
                }
            });
            return false;
        }

в предупреждении (данные), я определенно вижу <div id="viewport">, но alert(respHTML.length) отображает 0. еслия изменил селектор на "table.someclass", он бы его нашел.но селекторы, такие как "head" и "body", также возвращают 0что-то упустил?обходной путь работает, просто безобразно.

большое спасибо!

Ответы [ 2 ]

7 голосов
/ 09 января 2011

Если '#viewport' находится на верхнем уровне HTML-ответа, вам потребуется .filter(), поскольку .find() только смотрит внутри элементов верхнего уровня.

   success: function(data) {
        alert(data);
        var respHTML = $(data).filter("#viewport");
        alert(respHTML.length);
        $("#contacts_sidebar").html(respHTML);
    }

При передаче HTML в jQuery нельзя полагаться на поиск тегов <html> <head> <body> в кросс-браузерном режиме.

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

Другим вариантом может быть что-то вроде этого:

var respHTML = $('<div>' + data + '</div>').find("#viewport");

... но я не гарантирую результат.

2 голосов
/ 09 января 2011

Вы можете использовать функцию .load () для анализа возвращаемой страницы для определенного элемента.

Проверьте http://api.jquery.com/load и посмотрите раздел о загрузке фрагментов страницы.

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