2010-03-09 6 views
3

У меня есть несколько div, которые имеют общий класс. Если один из этих divs делает не имеет дочерний div, я хочу скрыть div. Я могу найти правильный div, но я не могу скрыть это.JQuery - Скрыть определенный div

Это мой код,

$(function() { 

     if ($(".adRight.childen('div')").length == 0) { 
      $(this).hide(); 

     } 

    }); 

Что я должен использовать вместо (это)? это относится к документу, а не к элементу, найденному if-statement.

ответ

5

Вы ищете:

$("div.adRight:not(:has(div))").hide(); 

ли, как он читает.

Ваш исходный код путаных селекторов с функциями (например, .childen рассматривается как селектор классов), и показывает, что вам нужно прочитать немного больше, прежде чем кормить код jQuery. Сожалею.
Ваш оператор if, например, ищет что-то, что jQuery не может найти (неправильный синтаксис). jQuery возвращает пустую коллекцию - у нее есть политика не бросать ненужные исключения, поэтому ее длина равна 0. Она не ищет 0 детей.
Также обратите внимание, что для простого действия, такого как hide, вам не нужно перебирать коллекцию - hide будет работать с элементами, которые вы уже нашли, используя ваш селектор.

+0

Спасибо Коби! Очень красивый и эффективный код. :) Я правильно понял это, - div.adRight относится ко всем div с классом adRight? -: not and: имеет чеки, если у него нет div? –

+0

Jova - правильный. Селекторы jQuery очень мощные, но удобны в работе и читабельны. Вы просто должны найти правильный! – Kobi

0

Может быть:.

если ($ ("adRight ДИВ ") == неопределенная) { $ (". AdRight") скрыть(); }

(~~ не уверен)

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