JQuery Find() не находит нужный элемент в ответе $.ajax()

227
12 декабря 2016, 10:11

Добрый день!

Есть галерея на сайте, по нажатию на кнопку "Загрузить ещё" должна происходить дозагрузка фотографий без перезагрузки страницы. Написал такой скрипт:

    $(".loading_more_instagram").click( function() {
    $this = $(this);
        //вот это просто эффект на кнопке
    if($this.hasClass("focus")) {
        return false;
    }
    $this.addClass("focus").text($(this).data("load"));
        //А вот пошёл сам запрос
    $.ajax(
        "адрес скрипта отдающего следующие 12 фотографий для загрузки",
        {
            data: {
                arParams: window.arParams, //Передаём массив параметров 
                max_id: $(this).data("max_id"),
                max_tag_id: $(this).data("max_tag_id")
            },
            type: "POST"
        }
    ).done(function(data) {
        $(document).find(".look_instagram_pop .clearfix").remove();
                //вот тут ответ есть
        console.log($(data)); 
                //а тут уже undefined
                console.log($(data).find(".look_instagram_pop").html());
    //По идеи добавляем к ранее загруженным фотографиям новые 12 фоток
$(document).find(".look_instagram_pop").append($(data).find(".look_instagram_pop").html());
     //А вот это кстати срабатывает
     $this.replaceWith($(data).find("span.loading_more_instagram"));
        });
    return false;
});

Непонятка состоит в следующем:

Когда я вывожу console.log($(data));, т.е. весь ответ скрипта, я вижу всё, что мне нужно:

Вот что тут есть:

Но как только я обращаюсь к console.log($(data).find(".look_instagram_pop").html()), в ответ получаю пустой объект (без html() то же самое):

Ума не приложу, почему так происходит. Ведь в $(data) уже пришло всё, что мне нужно. В общем, помогите, кто чем сможет. )

Заранее спасибо!

Answer 1

Да, тут действительно 2 варианта, т.к. получаемые в date теги находятся "на одном уровне", то find() начинает искать в первом из них и ничего не находит. Для того чтобы это обойти, нужно воспользоваться .filter(), как написал xfloooo, либо в шаблоне обернуть все элементы общим контейнером div, тогда будет работать jquery find().

READ ALSO
Валидация формы с использованием jQuery Validation

Валидация формы с использованием jQuery Validation

Делаю валидацию полей формы при помощи jQuery Validation

238
Циклическая работа

Циклическая работа

Доброго времени суток

192
Не всегда работает prop

Не всегда работает prop

Бывают случаи, когда prop не срабатываетПочему это происходит и как это исправить?

239
Перемещение элемента

Перемещение элемента

К примеру, есть такой код:

208