2010-06-21 3 views
0

Мне нужно скрыть div, в котором есть определенная строка, используя contains. Но jQuery скрывает все div, которые являются родителями целевого div тоже!Как я могу сказать jQuery, чтобы не пузырить дерево при использовании contains (string)?

$("div:contains('user_notifications')").css("display","none") 

Как сообщить jQuery, чтобы просто совместить div, который фактически содержит эту строку?

Благодаря


Edit:

вот внутренний DIV, который содержит строку, я хочу, чтобы соответствовать ..

<div class="group" style="display: block;"> 

<input type="hidden" value="0" name="user[notification_options[new_reply]]" style="display: block;"> 

<input type="checkbox" value="1" name="user[notification_options[new_reply]]" id="user_notification_options[new_reply]" checked="checked" style="display: block;"> 

Request help from system admin 

</div> 
+0

Что делает ваш HTML выглядит? –

+0

довольно плохой! ... и я не могу прикоснуться к нему .. это всего лишь куча div без атрибутов класса или идентификатора. – Joseph

+0

Можете ли вы опубликовать только самый внутренний div? например у него есть div внутри него, помимо этого текста? –

ответ

3

Предполагая DIV не дивы, которые являются братьями и сестрами в в тексте вы можете сделать это:

$("div:contains('user_notifications'):not(:has(div))").hide(); 

Использует :not(), чтобы получить противоположность :has(), чтобы выбрать только <div> элементов, которые не содержат других <div> элементов, устраняющих родителей. Также я использую .hide() здесь как более простой display: none;, если вы хотите его показать позже.

+0

Ник - Спасибо за исправление моего ответа (удалено). +1: o) – user113716

+0

Я включил html выше .. но я думаю, что это работает .. Большое спасибо! – Joseph

+0

Я не мог заставить его работать. –

0

Глядя на ваш HTML, это будет более подходящим:

$("input[name*=notification_options]").parent("div").hide(); 

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

  • Нет связанных вопросов^_^