學(xué)會(huì)自己封裝JQuery插件

今天簡(jiǎn)單說(shuō)說(shuō)JQuery插件的封裝。

  • 首先上一份簡(jiǎn)單的模板
//傳進(jìn)來(lái)參數(shù)有window和document,如果插件用不上,可以不寫(xiě)。目的是為了快速查找window和document。
;(function($,window,document){
    //設(shè)置插件的名字
    var pluginName = "defaultPluginName";
    //默認(rèn)參數(shù)配置項(xiàng)
    var defaults = {
        propertyName : "value"
    }
    //插件類的構(gòu)造方法
    function Plugin(element,options){
        //拿到dom元素,獲得對(duì)應(yīng)jq對(duì)象,要$(element)
        this.element = element;
        //覆蓋默認(rèn)配置項(xiàng)
        this.options = $.extend({},defaults,options);
        //緩存配置項(xiàng)
        this._defaults = defaults;
        //緩存插件名字(并沒(méi)神馬用)
        this._name = pluginName;
        //調(diào)用初始函數(shù)
        this.init();
    }
    // 插件初始化函數(shù)
    Plugin.prototype.init = function(){
        //做你想做的事情
    }
    // 也可以這樣 能定義更多函數(shù)
    Plugin.prototype = {
        init: function () { 
            this.fun*();  // 這樣可以用來(lái)調(diào)用其他函數(shù)
        }
        fun1: function() { }
        fun2: function() { }
        .....
    }
    //fn就是prototype
    $.fn[pluginName] = function(options){
        //each表示對(duì)多個(gè)元素調(diào)用,用return 是為了返回this,進(jìn)行鏈?zhǔn)秸{(diào)用
        return this.each(function(){
            if(!$.data(this,'plugin_'+pluginName)){
                //生成插件類實(shí)例。
                $.data(this,'plugin_'+pluginName,new Plugin(this,options));
            }
        });
    }
})(jQuery,window,document);

插件封裝中,需要注意的是this的使用。不多說(shuō)。通過(guò)上面的模板便能很輕松的封裝自己的插件啦~~~

使用方式 很簡(jiǎn)單的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="css/slider.css">
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/slider.js"></script>
    <title>輪播插件</title>
</head>
<body>
    <div id="myDiv" style="margin-top: 50px; width: 90%; margin: 0 auto;">
        <ul>
            <li style="background-image: url('img/1.jpg');">
                <!-- 添加想要的內(nèi)容 -->
            </li>
            <li style="background-image: url('img/2.jpg');">
                <!-- 添加想要的內(nèi)容 -->
            </li>
            <li style="background-image: url('img/3.jpg');">
                <!-- 添加想要的內(nèi)容 -->
            </li>
            <li style="background-image: url('img/4.jpg');">
                <!-- 添加想要的內(nèi)容 -->
            </li>
        </ul>
    </div>
    <script type="text/javascript">
        $('#myDiv').SliderImg();  // 通過(guò)id的必須的

        //$('#myDiv').data('myDiv_SliderImg').ToggleImg(2);
    </script>
</body>
</html>

將輪播圖當(dāng)做背景圖,可以繼續(xù)在輪播圖上添加需要的內(nèi)容。提供兩種輪播效果,淡入淡出和左右滑動(dòng),默認(rèn)參數(shù)在插件中可以看到

var defaults = {
        Type: 'default',    // fade淡入淡出|default左右滾動(dòng)
        ShowPrevNext: true, // 是否顯示下一個(gè)上一個(gè)
        ShowBtn: true,      // 是否顯示切換圓按鈕
        BtnAlign: 'center', // 切換按鈕位置 left|center|right
        AutoPlay: true,     // 是否自動(dòng)滾動(dòng)
        TimeOut: 5          // 自動(dòng)滾動(dòng)間隔時(shí)間
    }

可以調(diào)用時(shí)通過(guò)以下方式自定義參數(shù)

$('#myDiv').SliderImg({
    Type: 'fade'
});

通過(guò)data方法獲取到輪播插件對(duì)象,便可以通過(guò)該對(duì)象調(diào)用內(nèi)部方法。如下

$('#myDiv').data('myDiv_SliderImg').ToggleImg(2);

調(diào)用ToggleImg()方法切換到第三張圖。

該輪播插件使用方式就這樣,插件如何封裝就根據(jù)模板和這份插件便可以學(xué)會(huì),很簡(jiǎn)單的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,021評(píng)論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,261評(píng)論 4 61
  • 我自幼就喜歡花,直到現(xiàn)在仍然喜歡,創(chuàng)作也選擇花為主題,由于喜歡,喜歡花就畫(huà)花??墒?,不僅喜歡花,又很勤快,每逢節(jié)假...
    藍(lán)色的勿忘我閱讀 866評(píng)論 34 16
  • /韓尚小 文字是無(wú)辜的只是被濫用被胡亂地排列胡亂地表達(dá)著什么 不要期待它們能做什么 哪怕是喚醒眼睛麻木的味蕾 世界...
    韓尚小閱讀 533評(píng)論 8 22

友情鏈接更多精彩內(nèi)容