【发布时间】:2011-05-08 09:13:28
【问题描述】:
如何向我的插件用户公开事件?
我知道我应该使用:
$('#myPluginDiv').trigger('eventName', ["foo", "bar"]);
触发事件,但我正在寻找描述如何在插件中声明和调用事件的最佳实践。
【问题讨论】:
标签: events jquery-plugins plugin-architecture
如何向我的插件用户公开事件?
我知道我应该使用:
$('#myPluginDiv').trigger('eventName', ["foo", "bar"]);
触发事件,但我正在寻找描述如何在插件中声明和调用事件的最佳实践。
【问题讨论】:
标签: events jquery-plugins plugin-architecture
我认为您可以检查一些最常用的插件并做出自己的假设。我们对此没有标准,只有代码约定。
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)
结论:尝试遵循一般编程的最佳实践和约定,并寻找更好的示例。
【讨论】:
在插件中创建像字面量的对象
var plugin = {
show:function(){
// code for show()
}
};
【讨论】: