2012-06-22 24 views
7

Thay vì có các cuộc gọi lại lồng nhau trong JS, tôi muốn kích hoạt và nghe các sự kiện tùy chỉnh của riêng mình. Tôi không cần hoặc muốn truy cập DOM. Dưới đây là ví dụ:Kích hoạt sự kiện tùy chỉnh bằng javascript (hoặc jquery) khi chức năng của tôi kết thúc

function doSomething(){ 
//... 
$.trigger('finished-doSomething'); //fire the event 'finished-doSomething' 
} 

//when the event 'finished-doSomething' is fired -> execute the function in the second param 
$.live('finished-doSomething', function(){ 
    alert("I finished-doSomething"); 
}); 

Có thể làm điều đó với mã javascript bình thường hoặc với thư viện như jQuery không? Nếu không, cách tiếp cận tốt để tránh gọi lại lồng nhau là gì?

Cảm ơn!

Trả lời

15

Vâng, bạn có thể sử dụng các sự kiện tùy chỉnh trên một số thành phần phổ biến, giả sử document.body.

// Subscribe 
$(document.body).on('nifty.event', function() { 
    // Handle it 
}); 

// Publish 
$(document.body).trigger('nifty.event'); 

Gratuitous live example | source

Hoặc để ngắt kết nối hoàn toàn khỏi DOM, có một vài plugin jQuery/pub phụ, like this one.

0
$('#foo').on('custom', function(event, param1, param2) { 
    alert(param1 + "\n" + param2); 
}); 
$('#foo').trigger('custom', ['Custom', 'Event']); 

Nguồn: http://api.jquery.com/trigger/

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