2009-08-03 8 views
14

मैं कैसे जांच करूंगा कि कक्षा के सभी परीक्षाओं के साथ सभी div छुपाए गए हैं या नहीं। और अगर वे छिपे हुए सभी छिपे हुए सेट wrap1 हैं। धन्यवाद।यह जांचने के लिए jQuery का उपयोग करें कि सभी div छुपाए गए हैं

<div id='wrap1'> 
<div class="header">Header 1</div> 
<div class='test'><a href="#">Test 1</a></div> 
<div class='test'><a href="#">Test 2</a></div> 
<div class='test'><a href="#">Test 3</a></div> 
</div> 

अद्यतन: धन्यवाद बहुत जल्दी जवाब के लिए हर किसी को है, मैं यह काम कर गया। वे सभी बहुत उपयोगी थे।

+0

क्या कोई प्रश्न शीर्षक संपादित कर सकता है? मैं "सभी वर्गों के साथ सभी वर्गों" की खोज कर रहा था, और लगभग इसे एक पारित कर दिया। – Jason

उत्तर

33

आप के रूप में ऊपर और इस तरह यह करने के लिए सुझाव दिया चयनकर्ता का उपयोग करके के रूप में की जांच कर सकते हैं:

if ($("div.test:visible").length === 0) 
     $("#wrap1").hide(); 
+0

आप 'if ($ (" div। परीक्षण: दृश्यमान ")। लंबाई === 0) 'लाइन'' (! $ ("div.test: visual") लंबाई। '। –

0

यह देखने के लिए बेहतर तरीका है कि वे सभी दृश्यमान हैं या नहीं, कुल गणना के समान दृश्यता की गणना है।

$("#wrap1 div:visible").length == $("#wrap1 div").length 
+0

आपको उचित कक्षा परीक्षण के साथ इसे अर्हता प्राप्त करने की आवश्यकता है। ओपी के अनुसार रैपर होना चाहिए छिपा हुआ है कि "testN" वर्गीकृत डीआईवी छुपाए गए हैं, भले ही "हेडर" DIV नहीं है। – tvanfosson

7

यह स्निपेट पाश होगा सब <div id="wrap#"> और उन्हें छिपाने अगर परीक्षण छिपे हुए हैं।

$("div[id^='wrap']").each(function() { 
    var wrap = $(this); 

    if(wrap.children("div[class^='test']:visible").length == 0) { 
    wrap.hide(); 
    } else { 
    wrap.show(); 
    } 
}); 

आप अभी भी अपने <div id="wrap#"> दिखाई सब पर कोई परीक्षण देखते हैं, तो आप निम्न संशोधित स्निपेट का उपयोग कर सकते (मार्कअप में कोई भी रूप में) रखना चाहते हैं: कोई

$("div[id^='wrap']").each(function() { 
    var wrap = $(this); 

    if(wrap.children("div[class^='test']").length > 0 && 
    wrap.children("div[class^='test']:visible").length == 0) { 
    wrap.hide(); 
    } else { 
    wrap.show(); 
    } 
}); 

नहीं है संख्या वर्गों के लिए अनिवार्य कारण (किनारे के मामलों के अलावा)। आपकी संख्या उपर्युक्त कोड के साथ ही आपके सीएसएस को जटिल करती है। test से संख्या को हटाने के लिए यह आसान होगा। (जैसा कि आप हमेशा उन्हें का एक उपसमूह चुनने :lt(index), :gt(index), :eq(index), :first और :last का उपयोग कर सकते हैं आप इसे ज़रूरत नहीं है।

नंबर आईडी का सवाल है, वह ठीक बाद से प्रत्येक आईडी अद्वितीय होना चाहिए है।

+0

ध्यान दें कि यदि मिलान करने वाले वर्ग के साथ कोई div नहीं था तो यह रैपर div को भी छिपाएगा। सुनिश्चित नहीं है कि यह वांछित व्यवहार है या नहीं। – tvanfosson

+0

** @ tvanfosson: ** तकनीकी रूप से यदि मार्कअप में 'div.test' नहीं है, तो यह' div.test' दिखाई देने जैसा नहीं है। मुझे यकीन है कि वांछित व्यवहार। –

+0

यदि आप divs थे तो केवल व्यवहार चाहते थे, लेकिन वे सभी छिपाए गए थे, आप यह सुनिश्चित करने के लिए जांच सकते हैं कि: छुपी गिनती समान दिखाई देती है: दृश्यमान गणना। – tvanfosson

0
jQuery("#wrap1").find("div").each(function() 
    { 
     if ($(this).is(':hidden')) 
     { 
     } 
    } 
); 
संबंधित मुद्दे