2011-09-11 30 views
6

Câu hỏi này khá đơn giản. Nếu tôi chọn hai hoặc nhiều phần tử với jQuery và, ví dụ, sử dụng hàm fadeOut() của jQuery để ẩn chúng, hàm gọi lại được gọi hai lần (cho mỗi phần tử). Có cách nào để chỉ nhận được một cuộc gọi lại không?Ẩn nhiều phần tử với jQuery và nhận một cuộc gọi lại

Mã tôi hiện đang sử dụng để thực hiện tác vụ này được dán bên dưới.

$('#element-1, #element-2').fadeOut(250, function() { /* Callback invoked twice. */ }); 

Câu hỏi tương tự đã được đăng trước (jQuery multiple animate() callback), nhưng giải pháp có vẻ khá phức tạp đối với vấn đề đơn giản.

Trả lời

16

Bạn có thể sử dụng $.when[docs] (deferred objects):

$.when($('#element-1, #element-2').fadeOut(250)).then(function() { 
    // do something 
}); 

DEMO

này làm việc với bất kỳ hình ảnh động afaik.

+0

Có cách nào khác không? nó trông như vậy đi bộ xung quanh-ishly ... Hoặc là để được coi là một cách thích hợp trong jQuery và nó chỉ là sự thiếu hiểu biết của tôi rằng các đối tượng? –

+0

Tôi không biết bất kỳ cách nào khác và tài liệu '.animate' cũng không đề cập đến bất cứ điều gì. –

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