1

你知道这是怎么回事

$(function() { ... });

无论“文档就绪”事件是否已经发生,都会触发?我想定义一个这样的事件。

该事件是 jQuery 中的一个特例。我想知道自定义事件是否可以仅使用标准事件机制以相同的方式运行。

理想情况下,我希望能够以“正常”方式定义处理程序:

$(document).on("init.mything", function() { ... });

如果上述运行之前init.mything被触发,这现在可以工作。但如果没有,则处理程序永远不会运行。

让这件事变得棘手的是,除了 jQuery 已经加载之外,我不想假设任何事情。

有任何想法吗?

4

1 回答 1

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 对其进行了特殊处理。

于 2013-07-02T05:02:11.283 回答