2009-08-12 15 views
8

मैं एक छिपी हुई तालिका पंक्ति दिखाने के लिए एक jQuery स्लाइड टॉगल का उपयोग कर रहा हूं लेकिन यह डिस्प्ले शैली को ब्लॉक करने के लिए सेट करता है और मुझे टेबल-पंक्ति प्रदर्शित करने की आवश्यकता होती है। कोई विचार है कि मैं इसे कैसे पूरा कर सकता हूं?JQuery स्लाइड टॉगल डिस्प्ले प्रकार

धन्यवाद अग्रिम

उत्तर

2

में आप कॉलबैक का उपयोग इस

$('#tableRowId').slideToggle(function(){ 
    $(this).css('display', 'table-row'); 
}); 
+6

इसके साथ समस्या यह है कि यह हर बार तालिका-पंक्ति में डिस्प्ले शैली सेट करता है, जब आधे बार आप इसे छिपाने के लिए चाहते हैं। – dmr

+0

वही समस्या, इसे कम करना था। 'स्लाइड टॉगल()' दिखाता है और छुपाता है, इससे ऐसा होता है ताकि यह छिप नहीं सके। नीचे दिए गए मेरे उत्तर की जांच करें – inorganik

0

यह एक ज्ञात bug (भी here) है बदलने के लिए कर सकते हैं। jQuery slideToggle के साथ। slideToggle का उपयोग करने का कोई तरीका नहीं है और इसे डिस्प्ले शैली को सही तरीके से संरक्षित करें। एनीमेशन पूर्ण होने पर आप कॉलबैक के साथ डिस्प्ले शैली को लागू कर सकते हैं, लेकिन यह आपके इच्छित प्रभाव को प्राप्त नहीं कर सकता है।

+2

यह ध्यान देने योग्य है कि बग रिपोर्ट केवल .toggle() के उपयोग के अनुसार काम करता है। – Marc

0

सिर्फ समारोह

$(this).css('display','');

5

मैं इस समस्या का समाधान पता लगा कालबैक में इस कोड को जोड़ना - जाँच करता है, तो प्रदर्शन ब्लॉक करने के लिए (यदि तत्व दिखाए जाने के लिए टॉगल किया गया) स्थापित किया गया है और यदि वांछित प्रदर्शन प्रकार पर सेट है।

$('a.btn').on('click', function() { 
    $('div.myDiv').slideToggle(200, function() { 
     if ($(this).css('display') == 'block') $(this).css('display', 'table-row'); // enter desired display type 
    }); 
}); 
+0

प्रश्न पर ध्यान दें, उन्होंने पूछा कि इनलाइन शैली को टेबल-पंक्ति में कैसे सेट करें, इनलाइन-ब्लॉक -1 – redsquare

+0

@redsquare नोट करें मेरे कोड- टिप्पणी अनुभाग जो "वांछित प्रदर्शन प्रकार दर्ज करें" कहता है। इस प्रश्न के लिए एकमात्र कामकाजी समाधान को कम करने के लिए यह बहुत कमजोर है। – inorganik

+0

@redsquare मैंने अपना जवाब भी संपादित किया। – inorganik

3

अकार्बनिक का समाधान लगभग काम कर रहा है। लेकिन आपको step कॉलबैक को block से table-row बदलने के लिए भी सेट करने की आवश्यकता है।

 $('row-selector-here').slideToggle({ 
      duration: 'fast', 
      step: function() { 
       if ($(this).css('display') == 'block') { 
        $(this).css('display', 'table-row'); 
       } 
      }, 
      complete: function() { 
       if ($(this).css('display') == 'block') { 
        $(this).css('display', 'table-row'); 
       } 
      } 
     }); 
संबंधित मुद्दे