當前位置:編程學習大全網 - 腳本源碼 - 如何寫壹個jquery 插件

如何寫壹個jquery 插件

jquery插件開發模式

jquery插件壹般有三種開發方式:

通過$.extend()來擴展jQuery

通過$.fn 向jQuery添加新的方法

通過$.widget()應用jQuery UI的部件工廠方式創建

第壹種$.extend()相對簡單,壹般很少能夠獨立開發復雜插件,第三種是壹種高級的開發模式,本文也不做介紹。第二種則是壹般插件開發用到的方式,本文著重講講第二種。

插件開發

第二種插件開發方式壹般是如下定義

$.fn.pluginName = function() {

//your code here

}

插件開發,我們壹般運用面向對象的思維方式

例如定義壹個對象

var Haorooms= function(el, opt) {

this.$element = el,

this.defaults = {

'color': 'red',

'fontSize': '12px',

'textDecoration':'none'

},

this.options = $.extend({}, this.defaults, opt)

}

//定義haorooms的方法

haorooms.prototype = {

changecss: function() {

return this.$element.css({

'color': this.options.color,

'fontSize': this.options.fontSize,

'textDecoration': this.options.textDecoration

});

}

}

$.extend({}, this.defaults, opt)有{}主要是為了創建壹個新對象,保留對象的默認值。

$.fn.myPlugin = function(options) {

//創建haorooms的實體

var haorooms= new Haorooms(this, options);

//調用其方法

return Haorooms.changecss();

}

調用這個插件直接如下就可以

$(function() {

$('a').myPlugin({

'color': '#2C9929',

'fontSize': '20px'

});

})

上述開發方法的問題

上面的開發方法存在壹個嚴重的問題,就是定義了壹個全局的Haorooms,這樣對於插件的兼容等等各個方面都不好。萬壹別的地方用到了Haorooms,那麽妳的代碼就悲催了!現在我們把上面的代碼包裝起來,用壹個自調用匿名函數(有時又叫塊級作用域或者私有作用域)包裹,就不會出現這個問題了!包括js插件的開發,也是壹樣的,我們用壹個自調用匿名函數把自己寫的代碼包裹起來,就可以了!包裹方法如下:

(function(){

})()

用上面的這個包裹起來,就可以了。

但是還有壹個問題,當我們研究大牛的代碼的時候,前面經常看到有“;”,那是為了避免代碼合並等不必要的錯誤。

例如,我們隨便定義壹個函數:

var haoroomsblog=function(){

}

(function(){

})()

由於haoroomsblog這個函數後面沒有加分號,導致代碼出錯,為了避免這類情況的發生,通常這麽寫!

;(function(){

})()

把妳的插件代碼包裹在上面裏面,就是壹個簡單的插件了。(註js插件和jquery插件都是如此)

還有壹個問題

把妳的插件包裹在

;(function(){

})()

基本上可以說是完美了。但是為了讓妳開發的插件應用更加廣泛,兼容性更加好,還要考慮到用插件的人的壹些特殊的做法,例如,有些朋友為了避免jquery和zeptojs沖突,將jquery的前綴“$”,修改為“jQuery”,還有些朋友將默認的document等方法修改。為了讓妳的插件在這些東西修了了的情況下照常運行,那麽我們的做法是,把代碼包裹在如下裏面:

;(function($,window,document,undefined){

//我們的代碼。。

})(jQuery,window,document);

就可以避免上面的壹些情況了!

至此,妳開發的插件就算完美了!

  • 上一篇:夏天都有什麽花?(帶和花的名子)
  • 下一篇:吳奇隆竇驍失控淚崩
  • copyright 2024編程學習大全網