【问题标题】:Create a plugin, expose events创建插件,公开事件
【发布时间】:2011-05-08 09:13:28
【问题描述】:

如何向我的插件用户公开事件?


我知道我应该使用:

$('#myPluginDiv').trigger('eventName', ["foo", "bar"]);

触发事件,但我正在寻找描述如何在插件中声明和调用事件的最佳实践。

【问题讨论】:

    标签: events jquery-plugins plugin-architecture


    【解决方案1】:

    我认为您可以检查一些最常用的插件并做出自己的假设。我们对此没有标准,只有代码约定。

    Colorbox(来源:https://github.com/jackmoore/colorbox/blob/master/jquery.colorbox.js)为事件名称定义了一个前缀和一些常量。它还具有触发和运行回调的功能。

    jQuery UI(来源:https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.widget.js)在小部件类上也有一个用于触发事件的通用函数(用法:https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.dialog.js),但是您可以看到事件在源中间是硬编码的,而不是顶部的常量,就像在 Colorbox 上一样。

    我个人认为,并在我自己的插件中这样做,如果您有很多要触发的事件,创建常量会更好,但如果您只触发 2 或 3 个事件,则没有必要。

    辅助函数是必不可少的,并且应该是模板的一部分。

    我使用和看到的事件名称都遵循标准 CamelCase 例如beforeClose.

    有些人主张在 Colorbox 的 cbox_open 甚至 click.myPlugin 上使用前缀(参见:http://api.jquery.com/on/#event-names

    结论:尝试遵循一般编程的最佳实践和约定,并寻找更好的示例。

    【讨论】:

      【解决方案2】:

      在插件中创建像字面量的对象

      var plugin = {
        show:function(){
      // code for show()
      }
      
      
      };
      

      【讨论】:

      • 我在询问公开和发布事件的最佳做法。您的代码甚至不遵循 jQuery 插件模式。
      猜你喜欢
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      相关资源
      最近更新 更多