2009-08-28 34 views
14

sliderToggle विधि का उपयोग करते समय, :visible अभिव्यक्ति कभी भी सत्य के अलावा कुछ भी वापस नहीं प्रतीत होती है।स्लाइड टॉगल और: दृश्य

यदि मैं मैन्युअल रूप से show/hide का उपयोग :visible अभिव्यक्ति के संयोजन के साथ करता हूं तो यह ठीक काम करेगा।

का उदाहरण विफलता:

की
jQuery(".fileNode .nodeExpander").click(function() { 
    var notes = jQuery(this).parent().siblings(".fileNotes"); 
    notes.slideToggle ("fast"); 

    var isVisible = notes.is(":visible"); // Always returns true... 

    // Do stuff based on visibility... 
}); 

उदाहरण काम कर:

jQuery(".fileNode .nodeExpander").click(function() { 
    var notes = jQuery(this).parent().siblings(".fileNotes"); 
    var isVisible = notes.is(":visible"); 

    if (isVisible) 
     notes.hide("fast"); 
    else 
     notes.show("fast"); 

    // Do stuff based on visibility... 
}); 

कुछ HTML:

<ul> 
    <li class="fileNode"> 
     <img src="<%= Url.Content ("~/Images/Collapse.png") %>" alt="<%= UIResources.CollpaseAltText %>" class="nodeExpander" /> 
    </li> 
    <li class="fileLink"> 
     <%= Html.ActionLink (file.Name, "Details", new { id = file.FileId }) %> 
    </li> 
    <li class="fileNotes"> 
     <%= file.Description %> 
    </li> 
</ul> 

मुझे लगता है कि slideToggle नहीं है संभालने हूँ कर show/hide - क्या मैं कुछ और जांच सकता हूं?

मैंने फ़ायरफ़ॉक्स 3.5, आईई 7, 8 और क्रोम 4 में कोशिश की है ... सभी एक ही परिणाम के साथ।

धन्यवाद, कश्मीर

उत्तर

27

आपका पहला (गैर काम कर रहे) कोड टुकड़ा :visible परीक्षण की जाएगी, जबकि slideToggle मध्य संक्रमण है (अधिक सटीक है, यह इसके परीक्षण के तुरंत बाद संक्रमण शुरू होता है।) आप करें या न करें ' खोलने या बंद करने के बाद, मध्य संक्रमण राज्य :visible होगा - इसलिए आपको हमेशा true मिलता है।

कोशिश बुला हैंडलर जोड़ने slideToggle

+3

बेशक! धन्यवाद, अब एक मपेट की तरह महसूस करें - var isVisible =! Notes.is (": visible") को कॉल करके; स्लाइड टॉगल से पहले मुझे जवाब आवश्यक है। धन्यवाद! – Kieron

+0

यह थोड़ा सा अंतर्ज्ञानी है, लेकिन सही समझ में आता है। अगर केवल हमारे पास jQuery ऑब्जेक्ट के लिए आंतरिक स्लाइड-अप-स्टेटस है ... –

2

कोशिश से पहले .is(":visible") जाँच।

notes.slideToggle ("fast", function() { 
    var isVisible = notes.is(":visible"); 
}); 
संबंधित मुद्दे