@generate
...

Как в Jquery спарсить ajax ответ html?

Драстите я хотел сделать на сайте чтобы ссылки открывались без перезагрузки.
Но не могу спарсить как обычный html, не могу получать с помощью find. Не могу получить почти все элементы отдельно которые получаю ответом на ajax.
$(document).on('click', 'a', function(){
    $.ajax({
        url: $(this).attr('href'),
        dataType: 'html',
        success: function(data) {
            console.log($(data)); //Тут выводиться ниже в скрине
            console.log($(data).find('#pagination')); // Ничего не выдает lenght пишет 0
        }
    });
return false;
});


Это находиться в $(data)
6337cfec439a3469813836.png
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
zkrvndm
@zkrvndm
Архитектор решений
Неправильно парсишь, первым элементом передаешь селектор, а вторым html-код или документ, где надо найти.

Например:
$('#test', '<div class="b"><div id="test"></div></div>').length;


Но надо понимать, что jQuery не умеет искать на верхнем уровне. Например, так ты ничего не найдешь:
$('.b', '<div class="b"><div id="test"></div></div>').length;


Если нужен поиск по всему дереву, лучше использовать DOMParser для предварительного парсинга:
doc = new DOMParser().parseFromString('<div class="b"><div id="test"></div></div>', 'text/html');

$('.b', doc).length;


В твоем же случае можно поступить проще и просто обернуть ответ в еще один div:
$(document).on('click', 'a', function(){
    $.ajax({
        url: $(this).attr('href'),
        dataType: 'html',
        success: function(data) {
            console.log($(data)); //Тут выводиться ниже в скрине
            console.log($('<div>'+data+'</div>').find('#pagination')); // Должно найти
        }
    });
    return false;
});


P. S. Если ТОЧНО знаешь, что нужный элемент находится на верхнем уровне, то можно использовать фильтр:
$(document).on('click', 'a', function(){
    $.ajax({
        url: $(this).attr('href'),
        dataType: 'html',
        success: function(data) {
            console.log($(data)); //Тут выводиться ниже в скрине
            console.log($(data).filter('#pagination')); // Должно найти
        }
    });
    return false;
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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