<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The NoteBook of EricKong

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

     

     
    1、擴展jQuery自身之全局函數

    jQuery.logError={/*log error*/}

    jQuery.logWarning ={/*log warning */}

    jQuery.logDebug ={/*log debug */}

    使用:jQuery.logError();

    上面三個可以寫成

    jQuery.log= {

        Error:function(){/*log error*/},

        Warning: function(){/*log warning */},

        Debug: function(){/*log debug*/}

    }

    使用:jQuery.log.Error();

    jQuery.foobar={/*do foobar*/}

    使用:jQuery.foobar();

    以上的方法等同于使用 jQuery. extend ()

    jQuery. extend = {

        log: {    Error:function(){/*log error*/},

        Warning: function(){/*log warning */},

        Debug: function(){/*log debug*/}

    },

        foobar:function(){/*do foobar*/}

    }

    使用:

    jQuery.log.Error();

    jQuery.foobar();

    2、添加實例方法,擴展jQuery.fn

    jQuery.fn=jQuery.prototype

    如:jQuery.fn.showMessage=function(){

    alert(“message!!”)}

    使用:$(“#div1”).showMessage();

    l this是對當前jQuery對象的引用

    l 使用each迭代當前對象

    l 插件方法必須返回一個jQuery對象

    Plug me:制作自己的插件

    寫一個自己的jQuery插件是非常容易的,如果你按照下面的原則來做,可以讓其他人也容易地結合使用你的插件.

    為你的插件取一個名字,在這個例子里面我們叫它"foobar".
    創建一個像這樣的文件:jquery.[yourpluginname].js,比如我們創建一個jquery.foobar.js
    創建一個或更多的插件方法,使用繼承jQuery對象的方式,如:
    jQuery.fn.foobar = function() {
       // do something
    };

    可選的:創建一個用于幫助說明的函數,如:
    jQuery.fooBar = {
       height: 5,
       calculateBar = function() { ... },
       checkDependencies = function() { ... }
    };

    你現在可以在你的插件中使用這些幫助函數了:

    jQuery.fn.foobar = function() {
       // do something
       jQuery.foobar.checkDependencies(value);
       // do something else
    };

    可選的l:創建一個默認的初始參數配置,這些配置也可以由用戶自行設定,如:
    jQuery.fn.foobar = function(options) {
       var settings = {
                       value: 5,
                       name: "pete",
                       bar: 655
       };
       if(options) {
                       jQuery.extend(settings, options);
       }
    };

    現在可以無需做任何配置地使用插件了,默認的參數在此時生效:

    $("...").foobar();

    或者加入這些參數定義:

    $("...").foobar({
       value: 123,
       bar: 9
    });

    如果你release你的插件, 你還應該提供一些例子和文檔,大部分的插件都具備這些良好的參考文檔.

    現在你應該有了寫一個插件的基礎,讓我們試著用這些知識寫一個自己的插件.

    很多人試著控制所有的radio或者checkbox是否被選中,比如:

    $("input[@type='checkbox']").each(function() {
                   this.checked = true;
                   // or, to uncheck
                   this.checked = false;
                   // or, to toggle
                   this.checked = !this.checked;
    });

    無論何時候,當你的代碼出現each時,你應該重寫上面的代碼來構造一個插件,很直接地:

    $.fn.check = function() {
                   return this.each(function() {
                                   this.checked = true;
                   });
    };

    這個插件現在可以這樣用:

    $("input[@type='checkbox']").check();

    現在你應該還可以寫出uncheck()和toggleCheck()了.但是先停一下,讓我們的插件接收一些參數.

    $.fn.check = function(mode) {
                   var mode = mode || 'on'; // if mode is undefined, use 'on' as default
                   return this.each(function() {
                                   switch(mode) {
                                   case 'on':
                                                  this.checked = true;
                                                  break;
                                   case 'off':
                                                  this.checked = false;
                                                  break;
                                   case 'toggle':
                                                  this.checked = !this.checked;
                                                  break;
                                   }
                   });
    };

    這里我們設置了默認的參數,所以將"on"參數省略也是可以的,當然也可以加上"on","off", 或 "toggle",如:

    $("input[@type='checkbox']").check();
    $("input[@type='checkbox']").check('on');
    $("input[@type='checkbox']").check('off');
    $("input[@type='checkbox']").check('toggle');

    如果有多于一個的參數設置會稍稍有點復雜,在使用時如果只想設置第二個參數,則要在第一個參數位置寫入null.

    從上一章的tablesorter插件用法我們可以看到,既可以省略所有參數來使用或者通過一個 key/value 對來重新設置每個參數.

    作為一個練習,你可以試著將第四章的功能重寫為一個插件.這個插件的骨架應該是像這樣的:

    $.fn.rateMe = function(options) {
                   var container = this; // instead of selecting a static container with $("#rating"), we now use the jQuery context
                   var settings = {
                                   url: "rate.php"
                                   // put more defaults here
                                   // remember to put a comma (",") after each pair, but not after the last one!
                   };
                   if(options) { // check if options are present before extending the settings
                                   $.extend(settings, options);
                   }              // ...
                   // rest of the code
                   // ...
                   return this; // if possible, return "this" to not break the chain
    });

    posted on 2010-05-17 13:53 Eric_jiang 閱讀(2959) 評論(1)  編輯  收藏 所屬分類: JavaScript

    Feedback

    # re: 編寫自己的Jquery插件 2011-05-27 17:26 Jquery插件
    請不要發表任何與政治相關的內容  回復  更多評論
      

    主站蜘蛛池模板: 欧美大尺寸SUV免费| 美丽姑娘免费观看在线观看中文版| 成人免费大片免费观看网站| 亚洲AV日韩AV天堂一区二区三区 | 免费成人在线观看| 亚洲AV日韩AV永久无码色欲 | 国产精品内射视频免费| 亚洲真人日本在线| 青青草97国产精品免费观看| 亚洲日韩中文在线精品第一| 久久国产免费直播| 亚洲AV无码成人网站久久精品大 | 国产免费久久精品| 人体大胆做受免费视频| 国产精品亚洲二区在线观看| 中文字幕一区二区三区免费视频 | 啦啦啦中文在线观看电视剧免费版 | 亚洲精品视频在线观看视频| 免费视频爱爱太爽了| 亚洲乱码一二三四区乱码| 国产高清在线精品免费软件| 边摸边吃奶边做爽免费视频网站 | 无码不卡亚洲成?人片| 久久久久久毛片免费看| 久久青青草原亚洲av无码app| 国产无人区码卡二卡三卡免费| 亚洲av日韩专区在线观看| 国产AV无码专区亚洲AV漫画| 99视频免费观看| 亚洲日韩精品无码专区加勒比| 亚洲国产精品碰碰| 99re免费视频| 亚洲综合av一区二区三区| 亚洲国产av无码精品| 99re热精品视频国产免费| 亚洲最大中文字幕| 久久亚洲精品无码| 成人性生交大片免费看午夜a| 久久精品亚洲日本波多野结衣 | 国产成人免费高清激情明星| 综合一区自拍亚洲综合图区|