2012-03-28 64 views
0
<div class="contact-area"> 
    <div class="media-contact">name, email etc goes here...</div> 
</div> 

我需要检查,如果DIV接触面积有DIV媒体接触,如果没有则隐藏了接触面积,因为它有一个彩色背景,而我不想有一个空的彩色背景。如何测试一个div包含另一个DIV

这不是working.please帮助。

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

回答

-1

这确实不符合你的要求。查找返回所有找到的元素的数组。所以如果数组是空的mediaContact不存在!

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

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

与samccone的原始答案相同 - 如果没有类为'media-contact'的子元素,这将只隐藏类'contact-area'的元素。 – 2012-03-28 19:35:32

+0

@Bryan唐宁。真的它不是一个通用的答案,它是解决Anjana的问题的快速解决方案,并且它的确做到了...... – Zwik 2012-03-28 19:44:07

+2

假设页面上只有一个元素“contact-area”是短视的。我并不想在这里变成一个混蛋,只是说在一种情况下编写解决一个问题的代码通常会导致比解决问题更多的问题。如果这个元素是'#contact-area'而不是'.contact-area',那么这个解决方案就有优点。 – 2012-03-28 19:51:04

0
$('.contact-area').each( 
    function(i,t){ 
     !$('.media-contact', t).length && $(t).hide(); 
    } 
); 

http://jsperf.com/stackoverflow-test999所有这些速度仇敌那里

+0

One liner ftl! :P lol – Zwik 2012-03-28 19:19:08

+0

如果在没有带'media-contact'类的子元素的情况下找到一个元素,这将隐藏所有具有'contact-area'类的元素。 – 2012-03-28 19:20:22

+0

假它不会.. – samccone 2012-03-28 19:21:47

-1
if($('.contact-area').children().length > 0) 
+0

这不会工作,如果有其他东西在div。 – Zwik 2012-03-28 19:21:01

+0

^^^这是错误的 – samccone 2012-03-28 19:24:28

2

事情是这样的:

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

DEMO

0
$('.contact-area').each(function(){ 
    if($(this).has('.media-contact').length == 0){ 
     $(this).hide(); 
    } 
});