HTML-фрагмент, возвращенный в $ .ajax, не может быть пройден - PullRequest
2 голосов
/ 14 марта 2012

У меня есть такой HTML-фрагмент:

<h1>Lorem ipsum dolor</h1>
<p>Euismod tollam impedit</p>

Когда я получаю его с помощью метода jjuery ajax (), вот так:

$.ajax({
    url: 'mocks/test.html',
    dataType: 'html',
    success: function(results) {
    console.log($(results).find('p').text());
    }
});

Я вижу в консоли это: (пустая строка)

Однако, если я добавлю div вокруг моего фрагмента, как это:

<div>
    <h1>Lorem ipsum dolor</h1>
    <p>Euismod tollam impedit</p>
</div>

Затем консоль показывает содержимое элемента p. Есть идеи почему?

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Потому что вы строите объект jQuery с двумя элементами;h1 и p.find() ищет потомков элементов в объекте jQuery, но ваш p является частью объекта jQuery.

Вам необходимо использовать filter() вместо этого в этом случае, который просматривает внутри элементов в объекте jQuery.

alert($(results).filter('p').text());
2 голосов
/ 14 марта 2012

Ваш фрагмент HTML создает пару элементов в одном объекте jQuery, и .find() будет выполнять поиск только по их узлам-потомкам .

Вы должны либо заключить их в контейнер (что вы получаете один элемент в объекте jQuery с двумя потомками, как вы нашли), или вместо него используете .filter().

...