插件添加到$.fn
应仅适用于列出的元素,而不适用于任何未来的元素。
你应该集中精力让你的插件提供机制, e.g.:
(function($) {
$.fn.openmode = function(cmd) {
cmd = cmd || 'on';
switch (cmd) {
case 'click':
// read props, open windows, etc
break;
case 'on':
this.addClass('openmode');
break;
case 'off':
this.removeClass('openmode');
break;
}
});
})(jQuery);
然后允许插件用户注册事件处理程序triggers该机制,必要时使用事件委托:
$(document).on('click', 'a.openmode', function() {
$(this).openmode('click');
});
后面的代码也可以作为实用函数放入 jQuery 命名空间中:
(function($) {
$.openmode = function(cmd) {
cmd = cmd || 'on';
switch (cmd) {
case 'on':
$(document).on('click.openmode', 'a.openmode', function() {
$(this).openmode('click');
});
break;
case 'off':
$(document).off('click.openmode', 'a.openmode');
break;
}
};
})(jQuery);
这样只需调用:
$.openmode();
将完成为每个当前(和未来)启用插件所需的所有工作.openmode
元素。