我想创建一个一次性事件监听器,它将在第一次触发事件后立即执行回调。
main.js: (loaded first thing)
$(document).one('plugins_loaded', displayMenu);
plugins.js: (loaded some time after main.js)
$(document).trigger('plugins_loaded');
checkout.js: (loaded asynchronously or immediately after main.js)
$(document).one('plugins_loaded', displayCart);
我希望displayCart
立即执行,如果plugins_loaded
事件之前已被触发过,如果没有,那么displayCart
应该在displayMenu
之后调用{ {1}}事件触发。
答案 0 :(得分:1)
您正在寻找
$.Deferred
或once
和memory
标记的$.Callbacks
列表。存储在某个全局变量中,最好存储在应用程序对象的命名空间中。你只需要初始化一次,然后就可以随时随地添加回调,并在以后触发它们。
您无法真正使用在$(document)
上触发的自定义事件,因为过去的事件无法观察到。