亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

寫JQuery插件的基本知識

2019-11-20 21:35:33
字體:
供稿:網(wǎng)友

普及JQuery知識

知識1:用JQuery寫插件時(shí),最核心的方法有如下兩個(gè):

復(fù)制代碼 代碼如下:


$.extend(object) 可以理解為JQuery 添加一個(gè)靜態(tài)方法。

$.fn.extend(object) 可以理解為JQuery實(shí)例添加一個(gè)方法。

基本的定義與調(diào)用:

復(fù)制代碼 代碼如下:

/* $.extend 定義與調(diào)用
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
$.extend({ fun1: function () { alert("執(zhí)行方法一"); } });
$.fun1();
/*  $.fn.extend 定義與調(diào)用
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
$.fn.extend({ fun2: function () { alert("執(zhí)行方法2"); } });
$(this).fun2();
//等同于
$.fn.fun3 = function () { alert("執(zhí)行方法三"); }
$(this).fun3();

知識2:jQuery(function () { }); 與  (function ($) { })(jQuery);的區(qū)別:

復(fù)制代碼 代碼如下:

jQuery(function () { });
//相當(dāng)于
$(document).ready(function () { });
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
(function ($) { })(jQuery);
//相當(dāng)于
var fn = function ($) { };
fn(jQuery);

jQuery(function () { });是某個(gè)DOM元素加載完畢后執(zhí)行方法里的代碼。
(function ($) { })(jQuery); 定義了一個(gè)匿名函數(shù),其中jQuery代表這個(gè)匿名函數(shù)的實(shí)參。通常用在JQuery插件開發(fā)中,起到了定義插件的私有域的作用。

三:開發(fā)JQuery插件標(biāo)準(zhǔn)結(jié)構(gòu)

1,定義作用域:定義一個(gè)JQuery插件,首先要把這個(gè)插件的代碼放在一個(gè)不受外界干擾的地方。如果用專業(yè)些的話來說就是要為這個(gè)插件定義私有作用域。外部的代碼不能直接訪問插件內(nèi)部的代碼。插件內(nèi)部的代碼不污染全局變量。在一定的作用上解耦了插件與運(yùn)行環(huán)境的依賴。說了這么多,那要怎樣定義一個(gè)插件的私有作用域?

復(fù)制代碼 代碼如下:

(function ($) {
})(jQuery);

到現(xiàn)在為止,其實(shí)一個(gè)最簡單的JQuery插件就已經(jīng)完成了。調(diào)用的時(shí)候可以$("#domName").easySlider({}),或者$(".domName").easySlider({})或者更多的方式來調(diào)用這個(gè)插件。

3,設(shè)置默認(rèn)值:定義一個(gè)JQuery插件,就像定義一個(gè).net控件。一個(gè)完美的插件,應(yīng)該是有比較靈活的屬性。我們來看這段代碼:<asp:TextBox ID="TextBox1" Width="20" Height="100" runat="server"></asp:TextBox>。  TextBox控件有Width和Height屬性,用戶在用TextBox時(shí),可以自由的設(shè)置控件的Height和Width,也可以不設(shè)置值,因?yàn)榭丶陨碛心J(rèn)值。那準(zhǔn)備開發(fā)一個(gè)JQuery插件時(shí),在用戶未指定屬性時(shí),應(yīng)該有默認(rèn)值,在JQuery可以分兩步實(shí)現(xiàn)這樣的定義,看如下代碼step03-a,step03-b。

復(fù)制代碼 代碼如下:

//step01 定義JQuery的作用域
(function ($) {
    //step03-a 插件的默認(rèn)值屬性
    var defaults = {
        prevId: 'prevBtn',
        prevText: 'Previous',
        nextId: 'nextBtn',
        nextText: 'Next'
        //……
    };
    //step02 插件的擴(kuò)展方法名稱
    $.fn.easySlider = function (options) {
        //step03-b 合并用戶自定義屬性,默認(rèn)屬性
        var options = $.extend(defaults, options);
    }
})(jQuery);

做程序的人都喜歡創(chuàng)新,改改變量名呀,換一個(gè)行呀這些。當(dāng)看到用var defaults = {}來表示一個(gè)默認(rèn)屬性時(shí),在自己寫JQuery插件時(shí)就想著與眾不同,所以用var default01 ={} ,var default02 ={}來表示默認(rèn)屬性了。然后默認(rèn)屬性名五花八門,越來越糟。所以建議在寫JQuery插件時(shí),定義默認(rèn)屬性時(shí),都用defaults變量來代表默認(rèn)屬性,這樣的代碼更具有可讀性。

有人看到這行代碼:var options = $.extend(defaults, options),皺起眉頭,表示不解。那我們先來看如下代碼:

復(fù)制代碼 代碼如下:

var obj01 = { name: "英文名:Sam Xiao", age: 29, girlfriend: { name: "Yang", age: 29} }
var obj02 = { name: "中文名:XiaoJian", girlfriend: { name: "YY"} };

var a = $.extend(obj01, obj02);
var b = $.extend(true, obj01, obj02);
var c = $.extend({}, obj01, obj02);
var d = $.extend(true,{}, obj01, obj02);

把代碼拷貝到開發(fā)環(huán)境中,分別看一下a,b,c,d的值,就明白了var options = $.extend(defaults, options)的含義了。表示 options 去覆蓋了defaults的值,并把值賦給了options。
在插件環(huán)境中,就表示用戶設(shè)置的值,覆蓋了插件的默認(rèn)值;如果用戶沒有設(shè)置默認(rèn)值的屬性,還是保留插件的默認(rèn)值。

4,支持JQuery選擇器:JQuery選擇器,是JQuery的一個(gè)優(yōu)秀特性,如果我們的插件寫來不支持JQuery選擇器,確實(shí)是一個(gè)不小的遺憾。如了使自己的JQuery插件能支持多個(gè)選擇器,我們的代碼應(yīng)該這樣定義:

復(fù)制代碼 代碼如下:

//step01 定義JQuery的作用域
(function ($) {
    //step03-a 插件的默認(rèn)值屬性
    var defaults = {
        prevId: 'prevBtn',
        prevText: 'Previous',
        nextId: 'nextBtn',
        nextText: 'Next'
        //……
    };
    //step02 插件的擴(kuò)展方法名稱
    $.fn.easySlider = function (options) {
        //step03-b 合并用戶自定義屬性,默認(rèn)屬性
        var options = $.extend(defaults, options);
        //step4 支持JQuery選擇器
        this.each(function () {

        });
    }
})(jQuery);

5,支持JQuery的鏈接調(diào)用:上邊的代碼看似完美了,其實(shí)也不那么完美。到目前為止還不支持鏈接調(diào)用。為了能達(dá)到鏈接調(diào)用的效果必須要把循環(huán)的每個(gè)元素return

復(fù)制代碼 代碼如下:

//step01 定義JQuery的作用域
(function ($) {
    //step03-a 插件的默認(rèn)值屬性
    var defaults = {
        prevId: 'prevBtn',
        prevText: 'Previous',
        nextId: 'nextBtn',
        nextText: 'Next'
        //……
    };
    //step02 插件的擴(kuò)展方法名稱
    $.fn.easySlider = function (options) {
        //step03-b 合并用戶自定義屬性,默認(rèn)屬性
        var options = $.extend(defaults, options);
        //step4 支持JQuery選擇器
        //step5 支持鏈?zhǔn)秸{(diào)用
        return this.each(function () {

        });
    }
})(jQuery);

這樣的定義才能支持鏈接調(diào)用。比如支持這樣的調(diào)用:$(".div").easySlider({prevId:"",prevText:""}).css({ "border-width": "1", "border-color": "red", "border-bottom-style": "dotted" });

6,插件里的方法:往往實(shí)現(xiàn)一個(gè)插件的功能需要大量的代碼,有可能上百行,上千行,甚至上萬行。我們把這代碼結(jié)構(gòu)化,還得借助function。在第一點(diǎn)已經(jīng)說了,在插件里定義的方法,外界不能直接調(diào)用,我在插件里定義的方法也沒有污染外界環(huán)境?,F(xiàn)在就嘗試著怎么樣在插件里定義一些方法:

復(fù)制代碼 代碼如下:

//step01 定義JQuery的作用域
(function ($) {
    //step03-a 插件的默認(rèn)值屬性
    var defaults = {
        prevId: 'prevBtn',
        prevText: 'Previous',
        nextId: 'nextBtn',
        nextText: 'Next'
        //……
    };
    //step06-a 在插件里定義方法
    var showLink = function (obj) {
        $(obj).append(function () { return "(" + $(obj).attr("href") + ")" });
    }

    //step02 插件的擴(kuò)展方法名稱
    $.fn.easySlider = function (options) {
        //step03-b 合并用戶自定義屬性,默認(rèn)屬性
        var options = $.extend(defaults, options);
        //step4 支持JQuery選擇器
        //step5 支持鏈?zhǔn)秸{(diào)用
        return this.each(function () {
            //step06-b 在插件里定義方法
            showLink(this);
        });
    }
})(jQuery);

步驟step06-a:在插件里定義了一個(gè)方法叫showLink(); 這個(gè)方法在插件外是不能直接調(diào)用的,有點(diǎn)像C#類里的一個(gè)私有方法,只能滿足插件內(nèi)部的使用。步驟step06-b演示了怎樣調(diào)用插件內(nèi)部的方法。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产成人高清激情视频在线观看| 一区二区三区在线观看免费| 国产日韩三级| 亚洲成人一区二区| 中文字幕一区二区三区5566| 免费免费啪视频在线观播放| 最新69国产成人精品视频免费| 免费无码av片在线观看| 精品国产av 无码一区二区三区| 成人精品一二三区| 一区在线观看免费| 91在线中文字幕| 成人精品三级| 国内露脸中年夫妇交换精品| 国产偷窥洗澡视频| 夜夜嗨av色一区二区不卡| 欧美三级理伦电影| 久久久久亚洲av成人毛片韩| 美女网站视频在线观看| 欧美性猛交xxxx免费看久久久| 亚洲人成电影网站色www| 日本桃色视频| 国产精品偷伦一区二区| 中文在线免费二区三区| 国产精品免费一区二区三区| 欧美大片黄色| 久久91精品久久久久久秒播| 99久久久久久久久| 中文字幕一区二区三区四区五区人| 欧美激情一区二区三区高清视频| 亚洲1卡2卡3卡4卡乱码精品| 影音先锋久久久| 亚洲狠狠丁香婷婷综合久久久| 日本中文字幕成人| 久久国际精品| 麻豆成全视频免费观看在线看| 麻豆福利视频| 快播亚洲色图| 天天色综合久久| 久久婷婷国产91天堂综合精品| 日韩欧美精品在线观看视频| 国产精品试看| 国产99一区视频免费| 91亚洲精品一区二区乱码| 伊人婷婷欧美激情| 草裙成人精品一区二区三区| 欧美又大又粗又长| 激情福利在线| 国产精品麻豆欧美日韩ww| 婷婷成人综合| 色在线视频免费| 自拍偷拍亚洲天堂| 中文字幕一区二区三区人妻| 日本中文字幕在线视频观看| 一本大道久久加勒比香蕉| 深夜成人在线| 亚洲精品无码专区在线播放| 国内综合精品午夜久久资源| 亚洲欧洲日韩综合| 国产成人精品电影久久久| 日韩毛片免费视频一级特黄| 精品日本一区二区三区在线观看| 丝袜脚交免费网站xx| 三级欧美在线一区| 日本精品福利视频| 中文乱码免费一区二区| 四虎成人精品永久免费av九九| 精品网站999www| www.一区二区三区.com| 久久亚洲欧美| 国产黄色网页| 综合欧美一区二区三区| 免费久久久久久久久| 91精品国产日韩91久久久久久| 日韩免费高清一区二区| 中文字幕久热精品视频免费| 国产精品视频一区二区三区四| 国产精品黄色av| 日本电影一区二区三区| 日本三级久久久| 国产成人三级在线播放| 国产剧情av在线| 国产午夜手机精彩视频| 在线免费看av不卡| 久久99久久99精品免视看婷婷| 麻豆精品新av中文字幕| 一区二区导航| 日韩精品福利网站| 国产精品小仙女| 午夜探花在线观看| 国模私拍在线观看| 91精品视频网站| 欧美xxxx14xxxxx性爽| 国产精品裸体瑜伽视频| 日产欧产美韩系列久久99| 亚洲日本一区二区| 性高潮久久久久久久久| 亚洲午夜精品久久久久久高潮| 欧美色欧美亚洲另类七区| 美女大黄三级视频在线观看| 久草网站在线观看| 黄网站色视频免费观看| 日韩理论在线| 国产精品美女主播| 欧洲性xxxx| 欧美日韩一区在线观看视频| 一色屋成人免费精品网站| 五月婷婷开心中文字幕| 亚洲视频一二| 久久精品国产精品国产精品污| 久久综合色播五月| 男女作爱免费网站| 黄色三级视屏| 亚洲精品久久久久久一区二区| 国产青春久久久国产毛片| 无人码人妻一区二区三区免费| 午夜精品一区二区三区在线视频| 久久婷婷国产91天堂综合精品| 亚洲人成人99网站| 97视频在线播放| yw3121.龙物视频永不失联| 一道本一区二区三区| 潘金莲一级淫片aaaaa| 高清一区二区三区日本久| 精品国产无码AV| 懂色av成人一区二区三区| 红杏视频成人| 999福利在线视频| 国产日韩一区二区三区在线播放| 国产成+人+日韩+欧美+亚洲| 精品国免费一区二区三区| 欧美日韩高清不卡| 日本一区美女| 91亚洲精品乱码久久久久久蜜桃| 久久久电影免费观看完整版| 欧美日韩国产综合视频在线观看| www.av成人| 欧美巨大丰满猛性社交| 精品无码一区二区三区的天堂| 美女高潮在线观看| 国产丝袜美腿一区二区三区| 黑人极品ⅴideos精品欧美棵| 深夜做爰性大片蜜桃| 日韩毛片免费视频一级特黄| 台湾佬中文娱乐久久久| 欧美亚洲在线观看| 在线播放国产一区中文字幕剧情欧美| 一区二区视频免费| 亚洲综合色区另类av| 懂色av蜜臀av粉嫩av分享吧最新章节| 看成年女人免费午夜视频| 尤物tv在线精品| 男女啪啪的视频| 中文字幕一区二区三区蜜月| 欧美一乱一性一交一视频| 澳门成人av网| 无码人妻一区二区三区免费| 色综合一区二区三区| 国产精品扒开腿做爽爽爽视频软件| 草草久视频在线观看电影资源| www.av麻豆| 毛片在线免费视频| 91精品综合久久| 超碰在线免费av| 国产一级免费观看| 国模无码国产精品视频| 国产精品678| 亚洲最大成人免费视频| 欧美日韩国产精品一区二区不卡中文| 成人激情综合| 成人av免费播放| 亚洲色图另类专区| 欧美日韩免费观看一区| 欧美精品tushy高清| 国产精品久久久久久久久动漫| 亚洲v中文字幕| 免费观看国产精品视频| 色妞一区二区三区| 在线免费观看av影视天堂| 日本少妇一区二区三区| 波多野结衣视频播放| 中文字幕被公侵犯的漂亮人妻| 日韩电影免费在线观看网站| 成人免费看片| 黄色大片在线免费看| 麻豆精品蜜桃一区二区三区| 日韩精品欧美激情一区二区| 欧美一区二区三区日韩视频| 日韩av网站在线免费观看| 欧美成年网站| 人人干人人看| 在线精品国产欧美| 欧美激情欧美激情在线五月| 日韩人妻精品中文字幕| 国产精品欧美久久久久无广告| 婷婷六月天在线| 午夜激情影院| 国产精品电影网站| 深夜福利视频网站| 亚洲第一区第二区第三区| 一区二区三区在线观看www| silk一区二区三区精品视频| 极品束缚调教一区二区网站| 激情视频免费网站| 999亚洲国产精| 成人免费在线观看视频网站| 欧美韩国日本一区| 深夜福利免费在线观看| 青娱乐精品视频在线| av色在线观看| 亚洲mv大片欧洲mv大片| 国产在线精品一区二区不卡了| 激情网站在线| 亚洲mv在线观看| 日本成人在线免费视频| 国产精品一区二区91| ririsao久久精品一区| 神马精品久久| 91精品国产综合久| 8x8x成人免费视频| 狠狠色伊人亚洲综合网站l| 久久久久综合一区二区三区| 伊人久久大香线蕉综合网蜜芽| 婷婷激情图片久久| 在线不卡视频| 午夜精品福利电影| 精品日韩视频| 欧美伊人久久久久久午夜久久久久| yellow中文字幕久久| 68国产成人综合久久精品| 日本不卡在线播放| 亚洲伊人伊色伊影伊综合网| 国产主播自拍av| 欧美在线观看天堂一区二区三区| xxxcom在线观看| 欧美日韩中文一区二区| 成人拍拍拍在线观看| 久久―日本道色综合久久| 欧美成人一二区| 羞羞视频在线观看| 国产天堂在线播放| 中文字幕超碰在线| 日韩欧美在线播放| 精品国产免费久久| 亚洲精品一区二区三区影院忠贞| 欧美日韩一区二区三区免费看| 无码精品一区二区三区在线播放| 麻豆精品少妇| 国产高清在线观看| 亚洲男人天堂| 6080亚洲精品一区二区| 欧美福利一区| 久草成人资源| 日韩免费精品视频| 男女啪啪a级毛片| a在线视频观看| 肥熟一91porny丨九色丨| 五月天婷婷基地| 亚洲国产高清在线| 日韩成人精品视频| 在线黄色的网站| 日本中文字幕精品—区二区| 岛国av一区二区三区| 无码精品在线观看| 久久婷婷国产精品| 国产在线视频福利| 亚洲 欧美 变态 另类 综合| 中文字幕在线视频免费| 欧美亚洲伦理www| 中文字幕在线免费视频| 欧美激情精品久久久久久大尺度| 两个人免费视频观看日本| 91久久精品无码一区二区| 欧美精品久久久久久久久久| av在线播放不卡| 亚洲成a人片在线不卡一二三区| 国产区高清在线| 亚洲老司机网| 人人爽人人av| 91cn在线观看| 久久网免费视频| 精品女同一区二区三区在线播放| 五月天久久久久久| 国产高清一区在线观看| 日韩视频www| 久久久不卡网国产精品一区| 女人被男人躁得好爽免费视频| 国产精品678| 999久久久免费精品国产牛牛| 亚洲综合图片网| 亚洲成a人片777777久久| 一级一片免费视频| 亚洲欧洲成人| 3atv在线一区二区三区| 精品国产人妻一区二区三区| 中文字幕一区二区中文字幕| 成人h片在线播放免费网站| 日韩精品视频在线播放| 色婷婷国产精品综合在线观看| 日本资源在线| 亚洲一区欧美二区| 国产成人手机高清在线观看网站| 亚洲男人的天堂在线| 一二三四在线观看免费高清中文在线观看| 国产情侣呻吟对白高潮| 欧美夫妇交换xxx| 在线电影院国产精品| 亚洲精品日韩成人| 天堂中文字幕在线| 999久久久免费精品国产| 国产免费无遮挡| 熟女少妇一区二区三区| 国产麻豆精品高清在线播放| 国产1区在线观看| 92国产精品久久久久首页| av免费精品一区二区三区| 久久久久亚洲av无码专区首jn| 亚洲免费三区一区二区| 国产男女猛烈无遮挡在线喷水| 91精品国产乱码久久久张津瑜| 日韩中文字幕精品视频| 国产伦精品一区二区| 在线不卡一区二区三区| 欧美精品在线免费播放| 久久黄色片网站| 在线观看免费成人av| 91嫩草国产线观看亚洲一区二区| 全彩无遮挡全彩口工漫画h#|