2011-12-23 9 views
8

मैं निम्नलिखित कोड है:jQuery .animate() सेट प्रदर्शित करता है: कोई नहीं, कैसे बचें?

HTML:

<div id="clickme"> 
    Click me :-) 
</div> 

<div id="info" style="background:red; width:100%; height:100px; margin-bottom:-100px; z-index:20; position:absolute; bottom:0px;"> 
    Stay, damn! 
</div> 

जावास्क्रिप्ट:

$('#clickme').click(function() { 
    $('#info').animate({ 
     marginBottom: 'toggle' 
    },{ 
     duration:500 
    }); 
}); 

यह भी उपलब्ध है पर http://jsfiddle.net/DxnQJ/

जाहिर है, मैं प्रकट करने के लिए #info DIV चाहते/गायब हो जाते हैं जब भी #clickme DIV क्लिक किया गया है। यह इरादे के रूप में काम कर रहा है, सिवाय इसके कि #info DIV एनीमेशन के बाद गायब हो गया है क्योंकि jQuery ने इसकी सीएसएस display संपत्ति none पर सेट की है।

मैं अपने DIV को छिपाने से रोकने के लिए jQuery को कैसे बता सकता हूं?

+2

jQuery स्रोत की जांच करना, ऐसा लगता है कि 'टॉगल' उन प्रभावों के लिए डिज़ाइन किया गया था जो पूरी तरह से दिखाए गए या छुपाए गए हैं (जैसे ऊंचाई, चौड़ाई और अस्पष्टता)। क्या होता है कि 'मुझे क्लिक करें :-)' पर क्लिक करना और पहली बार छिपी हुई चीज़ को एनिमेट करना एक ही प्रभाव है जैसे कि आपके पास 'मार्जिनबॉटम:' छुपा 'था। तो जब यह एनिमेटिंग किया जाता है, 'jQuery (elem) .hide();' आपके तत्व पर कॉल किया जाता है। – zkhr

उत्तर

7

मैं .slideToggle का उपयोग कर की सिफारिश करेंगे:

$('#clickme').click(function() { 
    $('#info').slideToggle(500); 
}); 

डेमो: http://jsfiddle.net/Daniel_Hug/DxnQJ/2

+0

ग्रेट संकेत, धन्यवाद! – Philip

2

जावास्क्रिप्ट कोड

$('#clickme').toggle(
     function() { 
      $('#info').animate({ 
       height:"0px" 
      }, 500); 
     }, 
     function() { 
      $('#info').animate({ 
       height:"100px" 
      }, 500); 
     }); 

http://jsfiddle.net/amkrtchyan/zymUK/2/

0

इस के साथ आपके क्लिक समारोह की जगह काम करता है:

$('#clickme').click(function() { 
     var whichSetting = $('#info').css('marginBottom'); 
     if(whichSetting == '-100px') { 
      whichSetting = '0px'; 
     } 
     else { 
      whichSetting = '-100px'; 
     } 
     $('#info').animate({ 
      marginBottom: whichSetting 
      },{ 
       duration:500 
     }); 

    }); 
+0

के लिए नीचे वोट क्या है? यह .slideToggle समाधान के रूप में सुरुचिपूर्ण नहीं हो सकता है, लेकिन यह ठीक काम करता है। और यह मार्जिनबॉटम के साथ काम करता है, जो पोस्टर के पास था। – Patches

संबंधित मुद्दे