//類級別插件開發(fā),主要是在jQuery中定義全局方法:
創(chuàng)新互聯(lián)是專業(yè)的大荔網(wǎng)站建設(shè)公司,大荔接單;提供成都網(wǎng)站設(shè)計、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行大荔網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
//第一種寫法
jQuery.myFunc = function(str){
alert("直接在jquery中定義方法",str)
}
//調(diào)用方式 $.myFunc("hello!");
//第二種寫法
jQuery.extend({
myFunc:function(str){
alert("extend擴展$的方法",str)
}
})
//調(diào)用方式 $.myFunc("hello!");
//第三種寫法: 為了不污染全局,掛載一個對象作為命名空間,自定義的所有方法放在這里,保證jQuery全局安全。
jQuery.define={
myFunc:function(str){
alert("命名空間的寫法",str)
}
}
//調(diào)用方式:$.define.myFunc("hello");
//以上三種是級別插件開發(fā)方式,不常用,從調(diào)用方式看出,他們是全局執(zhí)行的,不需要綁定節(jié)點對象。
//對象級別插件開發(fā):有規(guī)范模板
;(function($){
$.fn.plugin = function(options){
var defaults = {
//各種默認參數(shù)
}
var options = $.extend(defaults,options); //傳入的參數(shù)覆蓋默認參數(shù)
this.each(function(){
var _this = $(this); //緩存一下插件傳進來的節(jié)點對象。
//執(zhí)行內(nèi)容
})
return $(this); //把節(jié)點對象返回去,為了支持鏈式調(diào)用。
}
})(jQuery);
//調(diào)用方式
$("selector").plugin({
//自定義參數(shù),json格式
})
現(xiàn)在網(wǎng)上關(guān)于js和jquery封裝的插件很多,我剛剛接觸前端的時候,就很敬佩那些自己寫插件的大牛們!因為是他們給網(wǎng)站開發(fā)更多的便利,很多網(wǎng)頁效果,網(wǎng)上很多現(xiàn)成的插件!那么這些插件是如何寫的呢看首先是有扎實的js和jquery技術(shù)基礎(chǔ),其次還有一些寫插件的方法和技巧。關(guān)于js和jquery的技術(shù)基礎(chǔ),那是一個慢慢積累的過程。但是關(guān)于寫插件的一些注意和技巧,本文可以略微介紹一下,方便以后寫插件的時候用得到。
jquery插件開發(fā)模式
jquery插件一般有三種開發(fā)方式:
通過$.extend()來擴展jQuery
通過$.fn 向jQuery添加新的方法
通過$.widget()應(yīng)用jQuery UI的部件工廠方式創(chuàng)建
第一種$.extend()相對簡單,一般很少能夠獨立開發(fā)復(fù)雜插件,第三種是一種高級的開發(fā)模式,本文也不做介紹。第二種則是一般插件開發(fā)用到的方式,本文著重講講第二種。
jQuery 如何寫插件 -
jQuery插件的開發(fā)包括兩種:
一種是類級別的插件開發(fā),即給jQuery添加新的全局函數(shù),相當于給jQuery類本身添加方法。jQuery的全局函數(shù)就是屬于jQuery命名空間的函數(shù),另一種是對象級別的插件開發(fā),即給jQuery對象添加方法。下面就兩種函數(shù)的開發(fā)做詳細的說明。
1、類級別的插件開發(fā)
類級別的插件開發(fā)最直接的理解就是給jQuery類添加類方法,可以理解為添加靜態(tài)方法。典型的例子就是$.AJAX()這個函數(shù),將函數(shù)定義于jQuery的命名空間中。關(guān)于類級別的插件開發(fā)可以采用如下幾種形式進行擴展:
1.1?
添加一個新的全局函數(shù)
添加一個全局函數(shù),我們只需如下定義:
jQuery.foo =?
function() {?
alert('This is a test. This is only a?
test.');?
};?
1.2?
增加多個全局函數(shù)
添加多個全局函數(shù),可采用如下定義:
Java代碼 收藏代碼
jQuery.foo = function() {?
alert('This is a test. This is?
only a test.');?
};?
jQuery.bar =?
function(param) {?
alert('This function takes a?
parameter, which is "' + param + '".');?
};?
調(diào)用時和一個函數(shù)的一樣的:jQuery.foo();jQuery.bar();或者$.foo();$.bar('bar');
1.3?
使用jQuery.extend(object);
jQuery.extend({?
foo:?
function() {?
alert('This is a test. This is?
only a test.');?
},?
bar: function(param)?
{?
alert('This function takes a?
parameter, which is "' + param +'".');?
}?
});