方便用户自定义默认参数
$.fn.hilight = function (options) {
var opts = $.extend({}, $.fn.hilight.defaults, options);
};
$.fn.hilight.defaults = {
foreground: 'red',
background: 'yellow'
};
方便用户自定义实现细节, 如元素隐藏效果,插件不可能全部枚举,推荐提供为用户自定义
$.fn.hilight = function (options) {
return this.each(function () {
var elem = $(this);
var markup = elem.html();
markup = $.fn.hilight.format(markup);
elem.html(markup);
});
};
$.fn.hilight.format = function (txt) {
return '<strong>' + txt + '</strong>';
};
如果插件会创建元素, 应该给这些元素添加一些标记, 方便用户获取(如使用样式,获取元素).
var defaults = {
wrapperAttrs: {
class: 'gallery-wrapper'
}
};
var settings = $.extend(true, {}, defaults, options);
var wrapper = $('<div />')
.attr(settings.wrapperAttrs);
插件有状态变化, 并且用户关心这些事件时, 可以通过回调完成
var defaults = {
onImageShow: function () {}
};
nextButton.on('click', showNextImage);
function showNextImage() {
var image = getNextImage();
settings.onImageShow.call(image);
}
jQuery提供很多常用功能, 使用它们可以让代码更加可维护
优化准则: 只优化必须优化的代码, 先保证代码功能实现, 可维护, 可理解, 性能和文件大小确实影响很大时才优化重构.
container.on('click.hilight', fn);
// bad
$('#foo').data('text', 'hello world');
// good
$('#foo').data('yourPluginName', 'hello world');
除了调用函数时传入参数, 还可以支持通过data-配置. Bootstrap同时支持js调用初始化和data-属性自动初始化
<div data-option="{width:200, height: 100}"></div>