jQuery: найти ближайший элемент к селектору «*: contains ('text')»

0

Основываясь на этом вопросе jQuery: почему: содержит селекторный возврат undefined? , он просто возвращает <html> который содержит текст и все остальное между ними.

Я использую селектор подстановочных знаков, потому что я не знаю, как выглядит ближайший родитель, содержащий текст. Как найти ближайший элемент, содержащий текст? Я использую :contains селектор, так что я могу найти элемент с текстовыми и дочерними текстовыми узлами при подведении итогов в соответствии с значением в :contains аргумент.

Html:

<ul>
    <li class="youarehere"><a id="nav-questions" href="/questions">Questions</a></li>
    <li><a id="nav-tags" href="/tags">Tags</a></li>
    <li><a id="nav-users" href="/users">Users</a></li>
    <li><a id="nav-badges" href="/help/badges">Badges</a></li>
    <li><a id="nav-unanswered" href="/unanswered">Unanswered</a></li>
</ul>

Ожидаемый: $("*:contains('Questions Tags Users Badges Unanswered')") который возвращает <ul>, ближайший родитель, который содержит весь текст вместо <html>.

  • 1
    Можете ли вы показать нам фактический HTML?
  • 0
    Это странная строка , чтобы соответствовать, и с помощью :contains селектор псевдо селектором , который выбирает каждый элемент в DOM кажется ужасной идеей.
Показать ещё 4 комментария
Теги:

1 ответ

1

Если вам нужен ближайший родитель, вам нужно использовать правильный метод select:

var parent = $(this).closest(":contains('Questions Tags Users Badges Unanswered'"));
  • 0
    Я запустил это на текущей странице stackoverflow, var parent = $(this).closest(":contains('Questions Tags Users Badges Unanswered')"); возвращает неопределенное. var parent = $(this).closest(":contains('Unanswered')"); также возвращает неопределенное.
  • 0
    @KimJongWoo Какое значение this вы передаете там? И все же метод closest() в jQuery всегда возвращает объект-обертку jQuery. undefined указывает, что у вас есть ошибки в другом месте, проверьте код.

Ещё вопросы

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