2012-03-28 100 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(); 
    } 
});