.get () не фильтрует определенные селекторы CSS

0

в .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');

К сожалению, селектор будет переменной в конце, поэтому я не контролирую, какой селектор будет в конце.

  • 0
    В чем ваша проблема? Я не понимаю Осторожно, вы добавляете контент, но идентификаторы должны быть уникальными
  • 0
    Ой, простите, всего забыли записать это ... Проблема в том, что nextPageURL не возвращается, но .get() определенно его получает. Я положил это в описании.
Теги:

2 ответа

3
Лучший ответ

Вместо использования фильтра используйте find. Вам просто нужно обернуть содержимое в div, чтобы найти работу.

var html = $("<div/>");
html.html(data);
nextPageUrl = html
            .find('#detailnav > .next > a')
            .attr('href');

Фильтр просто ограничивает набор, он не ищет дочерние элементы.

  • 0
    Фильтр @ A.Wolff работал бы, если бы OP использовал: has () в нем ....
  • 0
    Я теперь вижу это;)
Показать ещё 2 комментария
2

Вы не можете использовать фильтр для перехода к дочерним элементам вашего элемента. Поэтому вместо:

 .filter('#detailnav > .next > a')

делать:

 .filter('#detailnav')
 .find('> .next > a')
  • 0
    Да, это не работает для меня из-за селектора переменных. Но спасибо за разъяснение, что невозможно поместить определенные селекторы CSS в .filter() .
  • 0
    @ Afterfter, что вы имеете в виду variable selector ?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню