2014-01-11 2 views
0

По этому вопросу jQuery: why does :contains selector return undefined? он просто возвращает <html>, который содержит текст и все остальное между ними.jQuery: найдите ближайший элемент к селектору "*: содержит ('текст')"

Я использую подстановочный знак, потому что я не знаю, как будет выглядеть ближайший родитель, содержащий текст. Как найти ближайший элемент, содержащий текст? Я использую селектор :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, кажется ужасной идеей. – adeneo

+0

Кроме того, если на предыдущий вопрос не был дан ответ, почему вы приняли ответ? Вы видели скрипку, которую я опубликовал в предыдущем вопросе задолго до того, как был опубликован неработающий ответ? – adeneo

ответ

1

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

var parent = $(this).closest(":contains('Questions Tags Users Badges Unanswered'")); 
+0

Я запустил это на текущей странице stackoverflow, 'var parent = $ (this) .closest (": contains ('Questions Tags Users Users Badges Unanswered') ");' возвращает undefined. 'var parent = $ (this) .closest (": contains ('Unanswered') ");' также возвращает undefined. – KJW

+0

@KimJongWoo Какую ценность «этого» вы проходите там? И все же метод 'ближайший()' в jQuery всегда возвращает объект оболочки jQuery. 'undefined' указывает, что у вас есть ошибки в другом месте, проверьте свой код. –

Смежные вопросы