詳解jQuery插件開發(fā)方式
jQuery插件開發(fā)
一般來說,jQuery插件的開發(fā)分為兩種:一種是掛在jQuery命名空間下的全局函數(shù),也可稱為靜態(tài)方法;另一種是jQuery對象級別的方法,即掛在jQuery原型下的方法,這樣通過選擇器獲取的jQuery對象實(shí)例也能共享該方法。
一、jQuery擴(kuò)展
1、$.extend(object)
類似于.Net的擴(kuò)展方法,用于擴(kuò)展jQuery。然后就可以用$.的方式調(diào)用。
$(function(){
$.extend({ fun1: function () { alert("為jQuery擴(kuò)展一個(gè)fun1函數(shù)!"); } });
$.fun1();
})
2、$.fn.extend(object)
擴(kuò)展jQuery的對象。
$.fn.extend({ fun2: function () { alert("執(zhí)行方法2"); } });
$("#id1").fun2();
可以用google來看看:

上面的寫法等同于:
$.fn.fun2 = function () { alert("執(zhí)行方法2"); }
$(this).fun2();
二、私有域
其定義方式如下:
(function ($) { })(jQuery);
//相當(dāng)于
var fn = function (xxoo) { };
fn(jQuery);
以下代碼彈出123。
$(function(){
var fn = function (xxoo) { };
fn(alert(123));
})
三、定義插件的基本步驟
1、定義作用域
開發(fā)一個(gè)jQuery插件,首先要把插件的代碼與外界隔離開來,外部的代碼不允許直接訪問插件內(nèi)部的代碼,插件內(nèi)部的代碼也不影響外部。
//步驟1 定義插件私有作用域
(function ($) {
})(jQuery);
這樣就能保證插件內(nèi)部的代碼與外界隔離了。
2、擴(kuò)展jQuery
定義了作用域之后,為了能夠讓外部調(diào)用,就需要將插件擴(kuò)展到j(luò)Query。
//步驟1 定義私有作用域
(function ($) {
//步驟2 插件的擴(kuò)展方法名稱
$.fn.MyFrame = function (options) {
}
})(jQuery);
3、默認(rèn)值
定義了jQuery插件之后,如果希望某些參數(shù)具有默認(rèn)值,那么可以以這種方式來指定。
//步驟1 定義私有作用域
(function ($) {
//步驟3 插件的默認(rèn)值屬性
var defaults = {
Id: '#id1',
};
//步驟2 插件的擴(kuò)展方法名稱
$.fn.MyFrame = function (options) {
//步驟3 合并用戶自定義屬性,默認(rèn)屬性(如果options為空,則使用defaults)
var options = $.extend(defaults, options);
}
})(jQuery);
4、支持jQuery選擇器
//步驟1 定義私有作用域
(function ($) {
//步驟3 插件的默認(rèn)值屬性
var defaults = {
Id: '#id1',
};
//步驟2 插件的擴(kuò)展方法名稱
$.fn.MyFrame = function (options) {
//步驟3 合并用戶自定義屬性,默認(rèn)屬性(如果options為空,則使用defaults)
var options = $.extend(defaults, options);
}
//步驟4 支持jQuery選擇器
this.each(function () {
});
})(jQuery);
5、支持jQuery的鏈?zhǔn)秸{(diào)用
//步驟1 定義私有作用域
(function ($) {
//步驟3 插件的默認(rèn)值屬性
var defaults = {
Id: '#id1',
};
//步驟2 插件的擴(kuò)展方法名稱
$.fn.MyFrame = function (options) {
//步驟3 合并用戶自定義屬性,默認(rèn)屬性(如果options為空,則使用defaults)
var options = $.extend(defaults, options);
}
//步驟4 支持jQuery選擇器
//步驟5 支持鏈?zhǔn)秸{(diào)用(將步驟4返回)
return this.each(function () {
});
})(jQuery);
6、插件內(nèi)部方法
//步驟1 定義私有作用域
(function ($) {
//步驟3 插件的默認(rèn)值屬性
var defaults = {
Id: '#id1',
};
//步驟6 在插件里定義函數(shù)
var MyFun = function (obj) {
alert(obj);
}
//步驟2 插件的擴(kuò)展方法名稱
$.fn.MyFrame = function (options) {
//步驟3 合并用戶自定義屬性,默認(rèn)屬性(如果options為空,則使用defaults)
var options = $.extend(defaults, options);
}
//步驟4 支持jQuery選擇器
//步驟5 支持鏈?zhǔn)秸{(diào)用(將步驟4返回)
return this.each(function () {
//步驟6 在插件里定義函數(shù)
MyFun(this);
});
})(jQuery);
由于作用域關(guān)系,步驟6的私有函數(shù)目前允許的插件內(nèi)部使用。
以上就是本文的全部內(nèi)容,希望對大家有所幫助,謝謝對腳本之家的支持!
相關(guān)文章
Javascript 類的繼承實(shí)現(xiàn)代碼
JavaScript中類的學(xué)習(xí),從基本類繼承過來方法。2009-07-07
javaScript實(shí)現(xiàn)支付10秒倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了javaScript實(shí)現(xiàn)支付10秒倒計(jì)時(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
學(xué)習(xí)JavaScript設(shè)計(jì)模式之策略模式
這篇文章主要為大家介紹了JavaScript設(shè)計(jì)模式中的策略模式,對JavaScript設(shè)計(jì)模式感興趣的小伙伴們可以參考一下2016-01-01
JS多個(gè)矩形塊選擇效果代碼(模擬CS結(jié)構(gòu))
非常不錯(cuò)的可以選擇多個(gè)矩形塊的功能代碼2008-11-11
JSON與JavaScript對象關(guān)系及語法規(guī)則詳解
這篇文章主要為大家介紹了JSON與JavaScript對象關(guān)系及語法規(guī)則詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
JavaScript前端實(shí)現(xiàn)GIF圖片循環(huán)播放
使用 img 加載 GIF 圖片,內(nèi)容只會播放一次,之后就會自動(dòng)暫停,所以這篇文章為大家介紹了如何使用JavaScript實(shí)現(xiàn)GIF圖片循環(huán)播放吧2025-03-03
uniapp?u-picker多列用法以及設(shè)置默認(rèn)選中值
uview組件庫u-picker組件可能很多人不熟悉,下面這篇文章主要給大家介紹了關(guān)于uniapp?u-picker多列用法以及設(shè)置默認(rèn)選中值的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
當(dāng)鼠標(biāo)滑過文本框自動(dòng)選中輸入框內(nèi)容的JS代碼分享
這篇文章主要介紹了當(dāng)鼠標(biāo)滑過文本框自動(dòng)選中輸入框內(nèi)容的JS代碼,有需要的朋友可以參考一下2013-11-11

