Javascript 插件统一的实现步骤

时间:2021-06-10 16:19:12

步骤:

     // 1. 定义立即调用的函数
+function($){
"use strict"; //使用严格模式ES5支持
//后续步骤
// 2. xx 插件类及原型方法的定义
// 3. 在jQuery上定义xx插件,并重设插件构造器
// 4. 防冲突处理
// 5. 绑定触发事件
}(window.jQuery)

代码例子(bootstrap的alert.js):

 /* ========================================================================
* Bootstrap: alert.js v3.2.0
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ +function ($) {
'use strict'; // ALERT CLASS DEFINITION
// ====================== var dismiss = '[data-dismiss="alert"]'
var Alert = function (el) {
$(el).on('click', dismiss, this.close)
} Alert.VERSION = '3.2.0' Alert.prototype.close = function (e) {
var $this = $(this)
var selector = $this.attr('data-target') if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
} var $parent = $(selector) if (e) e.preventDefault() if (!$parent.length) {
$parent = $this.hasClass('alert') ? $this : $this.parent()
} $parent.trigger(e = $.Event('close.bs.alert')) if (e.isDefaultPrevented()) return $parent.removeClass('in') function removeElement() {
// detach from parent, fire event then clean up data
$parent.detach().trigger('closed.bs.alert').remove()
} $.support.transition && $parent.hasClass('fade') ?
$parent
.one('bsTransitionEnd', removeElement)
.emulateTransitionEnd(150) :
removeElement()
} // ALERT PLUGIN DEFINITION
// ======================= function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.alert') if (!data) $this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
})
} var old = $.fn.alert $.fn.alert = Plugin
$.fn.alert.Constructor = Alert // ALERT NO CONFLICT
// ================= $.fn.alert.noConflict = function () {
$.fn.alert = old
return this
} // ALERT DATA-API
// ============== $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) }(jQuery);