Основываясь на этом вопросе 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>
.
Если вам нужен ближайший родитель, вам нужно использовать правильный метод select:
var parent = $(this).closest(":contains('Questions Tags Users Badges Unanswered'"));
var parent = $(this).closest(":contains('Questions Tags Users Badges Unanswered')");
возвращает неопределенное. var parent = $(this).closest(":contains('Unanswered')");
также возвращает неопределенное.
this
вы передаете там? И все же метод closest()
в jQuery всегда возвращает объект-обертку jQuery. undefined
указывает, что у вас есть ошибки в другом месте, проверьте код.
:contains
селектор псевдо селектором , который выбирает каждый элемент в DOM кажется ужасной идеей.