2012-06-22 19 views
7

tamamlandığında javascript (veya jquery) özel bir olayı tetikle JS'de iç içe geri aramalar yapmak yerine, kendi özel etkinliklerimi kullanmak ve dinlemek istiyorum. DOM'a erişmem ya da erişmek istemiyorum.İşlevim

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"); 
}); 

bunu yapmak mümkün olabilir mi normal javascript kodu ile veya jQuery gibi bir kütüphane ile: İşte bir örnek? Değilse, iç içe geri aranmalardan kaçınmak için iyi bir yaklaşım nedir?

Teşekkürler!

cevap

15

Bazı özel öğelerde, özel etkinlikleri document.body deyin.

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

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

Gratuitous live example | source

Ya da DOM'den tamamen ayrılmak için, birkaç tane pub/sub jQuery eklentisi vardır, like this one.

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

Kaynak: http://api.jquery.com/trigger/

İlgili konular