как проверить, если div содержит другой div - PullRequest
0 голосов
/ 28 марта 2012
<div class="contact-area">
  <div class="media-contact">name, email etc goes here...</div>
</div>

Мне нужно проверить, есть ли у div contact-area div media-contact, если нет, то скрыть контактную область, поскольку она имеет цветной фон, и я не хочу иметь пустой цветной фон.

Это не работает. Пожалуйста, помогите.

$('.contact-area').each(function() {
    var ContactAreaEmpty= $('.contact-area:not(:has(.media-contact)');
    ContactAreaEmpty.hide();

Ответы [ 5 ]

2 голосов
/ 28 марта 2012

Примерно так:

$('.contact-area').not(':has(.media-contact)').hide();​

DEMO

0 голосов
/ 28 марта 2012
$('.contact-area').each(function(){
    if($(this).has('.media-contact').length == 0){  
        $(this).hide();
    }
});
0 голосов
/ 28 марта 2012
$( '.contact-area' ).each( 
    function( i,t ){
        !$( '.media-contact', t ).length && $( t ).hide();
    }
);

http://jsperf.com/stackoverflow-test999 для всех этих ненавистников скорости

0 голосов
/ 28 марта 2012
if($('.contact-area').children().length > 0)
0 голосов
/ 28 марта 2012

Это точно, что вы просили. Функция find возвращает массив всех найденных элементов. Так что, если массив пуст, хорошо MediaContact не существует!

var mediaContact = $('.contact-area').find(".media-contact");

if (mediaContact.length <= 0) {
    $('.contact-area').hide();
}
...