2010-03-09 28 views
7

Tôi có hình động thanh trượt nhưng trên sự kiện clX.click #close div hidden trước khi nó hoạt ảnh -250px bên trái. Làm thế nào để chờ đợi cho đến khi các hình ảnh động hoàn thành và sau đó ẩn #close div?Thứ tự sự kiện jQuery và chờ cho đến khi hoạt ảnh hoàn thành

$(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(); 
     }); 
    }); 

Trả lời

11

Bạn có thể thêm chức năng gọi lại vào hoạt ảnh. Nó sẽ được kích hoạt khi hoạt ảnh kết thúc.

$('#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

Nói cách khác: bạn không chờ đợi, bạn hướng dẫn các hình ảnh động để làm cái gì khác khi nó được thực hiện. –

+0

Xong! Nhưng $ this.hide(); Không hoạt động đúng. –

4

@hasan, hình như @patxi $ nghĩa (điều này)

var closeable = $('#close'); 
$('#clx').bind('click', function(){ 
    // $(this) === $('#clx') 
    closeable.stop().animate({marginLeft:'-250px'},{ 
    duration: 500, 
    complete: function(){ 
     $(this).hide(); 
     // $(this) === closeable; 
    } 
    }); 
}); 
Các vấn đề liên quan