我想做这样的事情:
$("#container").otherBind("foo-content-loaded", function() {alert("immediate or later!");});
“foo-content-loaded”是一个自定义事件,我只会发射一次。 otherBind
与$.ready()
类似,因此如果事件已被触发,处理程序会立即触发,或者它就像常规事件一样。
如何定义otherBind()?很明显,这种绑定的酷CS名称是什么?
答案 0 :(得分:3)
使用Deferred:
,而不是触发自定义事件var deferred = $.Deferred();
// when content loaded, resolve the Deferred:
deferred.resolve();
在其他地方,您可以添加任意数量的done()
处理程序,即使您在事后添加它们也可以调用它们:
deferred.promise().done(function () {
// content was loaded at some point
});
如果您是通过$.ajax
加载内容,则应注意$.ajax
个调用已经返回一个Promise接口(Deferreds的受限制接口),您可以将done()
个处理程序附加到该接口上