2015-04-27 20 views
1

如果父對象只包含兩個或更少的子對象,我需要隱藏父對象。 szenario是:我的活動列爲<div class="event">,每個活動都有一個網址和一個標題。此外,每個event可以有participants各種類型 - 或沒有。如果沒有參與者列出,我希望jQuery刪除條目。jQuery:如果只有兩個子對象(或更少),隱藏父項

我到目前爲止是這樣的:

// Hide empty events 
if(($(".event").children().length)<3) {  
$(this).hide(); 
} 

但是,這並不產生任何影響。

在我使用它來檢查(和刪除)空父母不同的內容teype:

$("description:empty").parent().hide(); 

我希望這一個班輪適用於我的「活動任務」,但數據結構/的XSLT轉換太不同以至於不能應用相同的簡單功能。任何指針歡迎!

回答

3

您需要檢查的event情況下,否則你將有你可以遍歷所有這些使用$.each或全部事件

孩子的集合使用filter()

$(".event").filter(function(){ 
    return $(this).children().length < 3; 
}).hide(); 
+1

這也是*側步不正確的'this'在OPS原代碼。 :) –

1

你必須循環你的elments檢查他們在這裏是我的代碼做到這一點

$(document).ready(function(){ 
 
$(".event").each(function(){ 
 
    if(($(this).children().length)<3) { 
 
    $(this).hide(); 
 
    } 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div class="event" > 
 
<span>1</span> 
 
    <span>1</span> 
 
    <span>1</span> 
 
</div> 
 
<div class="event" > 
 
<span>1</span> 
 
<span>1</span> 
 
</div> 
 
<div class="event" > 
 
<span>1</span> 
 
</div> 
 
<div class="event" > 
 
<span>1</span> 
 
<span>1</span> 
 
    <span>1</span> 
 
    <span>1</span> 
 
    <span>1</span> 
 
</div>

+1

帶有布爾回調的'filter'通常比使用'each'循環更清潔。 –