你知道这是怎么回事。
$(function() { ... });
会触发“文件就绪”事件是否已经发生?我想定义一个这样的事件。
该事件是jQuery中的一个特例。我想知道自定义事件是否可以使用标准事件机制以相同的方式运行。
理想情况下,我希望能够以“正常”方式定义处理程序:
$(document).on("init.mything", function() { ... });
如果以上在init.mything
被触发之前运行,则此功能现在可用。但如果没有,则处理程序永远不会运行。
使这个棘手的是,除了jQuery已经加载之外,我不想假设任何东西。
有什么想法吗?
答案 0 :(得分:0)
我不确定我是否已经完成了所有jQuery插件编码,但我认为这个基本结构应该适合你:
;(function ($) {
$.fn.initMyThing(fn) {
if (this.data('mything_init')) {
fn.apply(this);
} else {
this.on("init.mything", function() {
$(this).data('mything_init', true);
fn.apply(this);
}
}
})(jQuery);
这意味着您必须使用语法
$(selector).initMyThing(function() ...);
而不是.on()
来建立处理程序。 document.ready工作方式的唯一原因是因为jQuery特别对待它。