2012-04-04 39 views
6

Làm cách nào để tôi chạy một hàm sau khi một phần tử nhất định đã hoàn thành hoạt ảnh? Đó là một hoạt cảnh như hình động, phần tử bị ẩn và khi một cái gì đó được nhấp vào, nó sẽ trở thành hiển thị bằng cách trượt nội dung của nó xuống (+ chiều cao).Sự kiện sau khi div đã kết thúc hoạt ảnh?

Tôi không có quyền kiểm soát các chức năng hình ảnh động trên yếu tố đó, vì vậy tôi không thể sử dụng tùy chọn gọi lại từ hàm $ .animate ...

Ngay bây giờ tôi có một cái gì đó giống như

$('.trigger').click(function(){ // <-- "trigger" will make the element animate 
    setTimeout(myfunction, 500); 
}); 

mà làm việc nhưng tôi không thích nó, cảm thấy hacky

+0

Các mã khác ... – mplungjan

Trả lời

3

nếu bạn đang sử dụng jQuery 1.5 + bạn có thể sử dụng phương pháp jQuery promise(): http://jsfiddle.net/rGBk7/

ví dụ:

/* do animation */ 
$("div").animate({ 'marginLeft' : '300px' }, 1000); 

/* attach a promise to animated element/s */  
$("div").promise().done(function() { 
    alert("animation end"); 
}); 

Xem http://api.jquery.com/promise/

+0

này chạy càng sớm càng trang tải. Vấn đề là hoạt ảnh của tôi chạy trên sự can thiệp của người dùng (nhấp vào một yếu tố khác) – Alex

+0

như vậy? http://jsfiddle.net/fcalderan/rGBk7/5/ – fcalderan

+0

một cái gì đó như thế, nhưng như tôi đã nói, tôi không có quyền kiểm soát các chức năng hoạt hình: (Vì vậy, nó phải là: http://jsfiddle.net/rGBk7/20/ – Alex

1

Bạn có nghĩa là:


$("div").queue(function(){ 
    your_function(); 
}); 

Nó sẽ được thực hiện sau khi hàng đợi hoạt hình xong

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