2011-11-21 40 views
16

Tôi đã tự hỏi nếu có bất kỳ cách nào để chờ cho đến khi fadeOut được hoàn thành trước khi fadeIn bắt đầu, như khi tôi chạy đoạn mã sau, nó đặt một div dưới khác, sau đó khi nó phai mờ nó di chuyển lên ... trông hơi xấu xí.jQuery - Chờ đợi cho fadeOut hoàn thành trước khi chạy fadeIn

Mã là như sau:

$('.sidebarform').fadeOut('slow'); 
$('.sidebarsuccess').fadeIn('slow'); 

Trả lời

39

Chức năng fadeOut có một callback mà nó thực thi khi các hình ảnh động được thực hiện:

$('.sidebarform').fadeOut('slow', function() { 
    $('.sidebarsuccess').fadeIn('slow'); 
}); 
+8

giữ tôi Nếu bạn chọn quá chung chung, chức năng hoàn thành sẽ kích hoạt mọi phần tử khi nó hoàn toàn bị mờ đi, vì vậy nếu có một số đã bị ẩn, nó sẽ kích hoạt ngay lập tức. – box86rowh

+2

Tôi đã sử dụng bộ chọn hiển thị: có thể nhìn thấy để chống lại sự cố được mô tả bởi @ box86rowh. Xem: http://api.jquery.com/visible-selector/ –

16

Một lựa chọn khác là sử dụng lời hứa mà sẽ chờ đợi cho tất cả các hình ảnh động cấp phát trên .sidebarform để hoàn tất trước tiên ngay cả khi chúng được bắt đầu từ nơi khác:

$('.sidebarform').fadeOut('slow').promise().done(function() { 
    $('.sidebarsuccess').fadeIn('slow'); 
}); 
+0

Mặc dù câu trả lời khác có dấu kiểm màu xanh lá cây, tôi tin rằng câu trả lời này giải quyết được vấn đề của tôi cụ thể hơn. – Lewis

Các vấn đề liên quan