2012-01-05 15 views
28

मैं एक div में सभी बाल तत्वों को छिपाना चाहता हूं। और उसके बाद फ़ंक्शन पर पास एक विशिष्ट व्यक्ति दिखाएं।Jquery: सभी बच्चों को छुपाएं, फिर एक विशिष्ट तत्व दिखाएं

function subDisplay(name) { 
    $("#navSub").each(function() { 
     $(this).hide(); 
    }); 
    $(name).show(); 
} 

तो मैं की तरह एक onmouse घटना से फ़ंक्शन को कॉल करें: subDisplay(#DivIwantToShow); लेकिन कुछ भी नहीं प्रदर्शित करता है ...

क्या मैं गलत कर रहा हूँ?

+3

क्या 'name' में पारित हो जाता है? क्या यह एक jQuery वस्तु है, या एक चयनकर्ता है? साथ ही, आपके कोड को देखते हुए ऐसा लगता है कि आपके पास एक से अधिक # # navSub' है, जो अवैध HTML है - आपके पास पृष्ठ में केवल एक अनन्य आईडी हो सकती है - इसके बजाय कक्षाओं का उपयोग करें। – Bojangles

+0

क्या आप सचमुच 'सबडिस्प्ले (#DivIwantToShow) को कॉल कर रहे हैं; '? –

+3

आपको 'subDisplay ('# DivIwantToShow') की आवश्यकता है;' - यह एक स्ट्रिंग है जिसे आप पास करते हैं –

उत्तर

61

आपको बच्चों को छिपाने की जरूरत है, न कि युक्त div।

$("#navSub").children().hide();

तो अब अगर div आप को दिखाने के लिए कोशिश कर रहे हैं माता पिता div यह अभी भी दिखाने जबकि दूसरों को छिपा रहना होगा में एक तत्व है।

+0

यह कमाल है ... –

0
function subDisplay(name) { 
    $("#navSub").hide(); 
    $('#'+name).show(); 
} 
1

@dotweb और @Matt से महान टिप्पणियाँ संक्षेप में प्रस्तुत करने के लिए;

function subDisplay(name) { 
    $('#navSub').hide(); 
    $(name).show(); 
} 

subDisplay('#DivIwantToShow'); 
3

आप #navSub के बच्चों को लक्षित कर रहे हैं, तो आप उन्हें लक्षित करते हैं और छिपाने उन्हें, बल्कि तत्व navSub से की जरूरत है; जो आप children() विधि का उपयोग कर कर सकते हैं;

function subDisplay(name) { 
    $('#navSub').children().hide(); 
    $(name).show(); 
}; 

अन्यथा, ऐसा लगता है कि आपके डीओएम में एक ही आईडी के साथ आपके पास कई तत्व हैं, जिनकी अनुमति नहीं है।

फिर आपको subDisplay() पर एक स्ट्रिंग (जो वैध jQuery चयनकर्ता है) पास करने की आवश्यकता है;

subDisplay('#DivIwantToShow'); 
0

तत्व का नाम नाम उपयोग में पारित हो जाता है अगर यह:

if($(this).attr('name') != name){ 
    //Hide it 
    } else { 
    //show it 
}