2010-03-09 16 views
7

मेरे पास एक स्लाइडर एनीमेशन है लेकिन clX.click event #close div पर एनिमेटेड -250px छोड़ा जाने से पहले छिपा हुआ है। एनीमेशन पूर्ण होने तक प्रतीक्षा करें और फिर #close div को छुपाएं?jQuery ईवेंट ऑर्डर और एनीमेशन पूर्ण होने तक प्रतीक्षा

$(document).ready(function() { 
     $("#open").click(function() { 
      if ($("#close").is(":hidden")) { 
       $("#open").animate({ 
        marginLeft: "-32px" 
       }, 200); 

       $("#close").show(); 
       $("#close").animate({ 
        marginLeft: "250px" 
       }, 500); 
      } 
     }); 
     $("#clX").click(function() { 
      $("#close").animate({ 
       marginLeft: "-250px" 
      }, 500); 

      $("#open").animate({ 
       marginLeft: "0px" 
      }, 200); 

      $("#close").hide(); 
     }); 
    }); 

उत्तर

11

आप एनीमेशन में कॉलबैक फ़ंक्शन जोड़ सकते हैं। एक बार एनीमेशन समाप्त होने के बाद इसे निकाल दिया जाएगा।

$('#clX').click(function() { 
    $('#close').animate({ 
    marginLeft: "-250px" 
    }, 500, function() { 
    // Animation complete. 
    $("#close").hide(); 
    //i supose $this.hide() <br/>would work also and it is more efficient. 
    }); 
}); 
+0

दूसरे शब्दों में: आप प्रतीक्षा नहीं है, आप एनीमेशन हिदायत कुछ और करने के लिए इसके पूर्ण हो जाने। –

+0

हो गया! लेकिन $ this.hide(); ठीक से काम नहीं कर रहा। –

4

@hasan, मुझे मालूम होता @patxi मतलब $ (इस)

var closeable = $('#close'); 
$('#clx').bind('click', function(){ 
    // $(this) === $('#clx') 
    closeable.stop().animate({marginLeft:'-250px'},{ 
    duration: 500, 
    complete: function(){ 
     $(this).hide(); 
     // $(this) === closeable; 
    } 
    }); 
}); 
संबंधित मुद्दे