в .get()
моего .get()
-request Я хочу отфильтровать содержимое для двух разных элементов. Это мой код:
function loadPosts(url) {
$.get(url, function(data) {
data = $.parseHTML(data);
nextPageUrl = $(data)
.filter('#detailnav > .next > a')
.attr('href');
data = $(data)
.filter('#content')
.children();
data.appendTo(container);
[…]
}, 'html');
}
и html:
<section id="#content">
[…]
</section>
<section id="detailnav">
<span class="prev">
<a href="link.php">Link</a>
</span>
<span class="next">
<a href="link.php">Link</a>
</span>
</section>
Проблема в том, что nextPageURL
не возвращается, но .get()
определенно получил его.
Функция .get()
-request работает так, как ожидалось, и данные, по-видимому, анализируются напрямую. Проблема заключается в том, что CSS-селектор для nextPageURL
, потому что это отлично работает:
nextPageUrl = $(data)
.filter('#detailnav')
.find('.prev > a')
.attr('href');
К сожалению, селектор будет переменной в конце, поэтому я не контролирую, какой селектор будет в конце.
Вместо использования фильтра используйте find. Вам просто нужно обернуть содержимое в div, чтобы найти работу.
var html = $("<div/>");
html.html(data);
nextPageUrl = html
.find('#detailnav > .next > a')
.attr('href');
Фильтр просто ограничивает набор, он не ищет дочерние элементы.
Вы не можете использовать фильтр для перехода к дочерним элементам вашего элемента. Поэтому вместо:
.filter('#detailnav > .next > a')
делать:
.filter('#detailnav')
.find('> .next > a')
.filter()
.
variable selector
?
nextPageURL
не возвращается, но.get()
определенно его получает. Я положил это в описании.