我没有在JS中嵌套回调,而是想开火并听我自己的自定义事件。我不需要或不想访问DOM。这是一个例子:
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");
});
是否可以使用普通的javascript代码或像jQuery这样的库来实现?如果没有,那么避免嵌套回调的好方法是什么?
谢谢!
答案 0 :(得分:15)
好吧,您可以在某些常见元素上使用自定义事件,例如document.body
。
// Subscribe
$(document.body).on('nifty.event', function() {
// Handle it
});
// Publish
$(document.body).trigger('nifty.event');
Gratuitous live example | source
或者为了完全断开与DOM的连接,有几个pub / sub jQuery插件,like this one。
答案 1 :(得分:0)
$('#foo').on('custom', function(event, param1, param2) {
alert(param1 + "\n" + param2);
});
$('#foo').trigger('custom', ['Custom', 'Event']);