jq的插件

1>基本概念

jq的插件分为类级别开发对象级别开发,类级别开发在真实项目中几乎不用

2>jQuery插件开发方式

1)通过$.extend()来扩展jQuery

相对简单,一般很少能够独立开发复杂插件,仅仅是在jQuery身上添加一个静态方法而已,我们通过$.extend()添加函数时直接通过$符号调用($.myfunction(),而不需要选中DOM元素($(“#element).myfunction())

2)通过$.fn向jQuery添加新的方法

一般插件开发用到的方式,可以利用jQuery强大的选择器带来便利,以及将插件更好的运用于所选的元素身上,使用的插件大多是通过这个方式开发

3)通过$.widget()应用jQuery UI的部件工厂方式创建

一种高级的开发模式,该模式开发出来的部件带有很多jQuery内建的特性比如插件的状态信息自动保存,各种关于插件的常用方式等

3>对象级别开发的步骤:

1)首先准备好一个架子

在JQuery环境下封装自己的插件,首先要避免与其他库的冲突,需要在插件后面传一个Jquery参数进去,对应的函数里面的参数写入$,使用自调用匿名函数包裹插件代码,这就是你编写插件代码要写入的空间

未避免出现问题,需在插件的前后加入分号

;(function($){

})(jQuery);

2)再上一个架子(jQuery官方提供的一个标准的开发模式)

$.fn.tab,这个tab是你这个功能插件的名字。

在这个插件名字定义的这个函数内部this指代的是我们在调用插件时,用jQuery选择器选中的元素,一般是一个jQuery类型的级别。

 var options=$.extend(defaults,options);利用extend方法把defaults对象的方法属性全部整合到options里

;(function($){

    $.fn.tab=function(options){

        var defaults={

            //各种参数,各种属性

        }

        var options=$.extend(defaults,options);

        this.each(function(){

            //各种功能

        })

        return this;

    }

})(jQuery);

3)开始写功能

通过调用jQuery的each()方法处理集合中的每个元素时要注意,在each方法内部,this指带的是普通的DOM元素,如果需要调用JQuery的方法那就需要用$来重新包装一下

;(function($){

    $.fn.tab=function(options){

        var defaults={

            //各种参数,各种属性

        }

        var options=$.extend(defaults,options);

        this.each(function(){

            var _this=$(this);

            _this.find('.tab_nav>li').click(function(){

             $(this).addClass('current').siblings().removeClass('current');

             var index=$(this).index();

             _this.find('.tab_content>div').eq(index).show().siblins().hide();

            });

        });

        return this;

    }

})(jQuery);

4)调用插件和配置参数

调用:找到外部容器,并调用你所写的tab方法

$(function(){

$('.tab').tab();

})

配置:这时我们不希望class元素和事件被写死,我们需要配置参数

;(function($){

    $.fn.tab=function(options){

        var defaults={

            //各种参数,各种属性

            currentClass:'current',

            tabNav:'.tab_nav>li',

            tabContent:'.tab_content>div',

            eventType:'click'

        }

        var options=$.extend(defaults,options);

        this.each(function(){

            var _this=$(this);

            _this.find(options.tabNav).on(options.eventType,function(){

             $(this).addClass(options.currentClass).siblings().removeClass(options.currentClass);

             var index=$(this).index();

             _this.find(options.tabContent).eq(index).show().siblings().hide();

            });

        });

        return this;

    }

})(jQuery);

$(function(){

$('.tab').tab({

eventType:'mouseover'

});

})

4>完整的代码

<div class="tab">

<ul class="tab_nav clearfix">

<li class="current">html</li>

<li>css</li>

<li>js</li>

</ul>

<div class="tab_content">

<div style="display:block">html</div>

<div>css</div>

<div>js</div>

</div>

</div>

<script src="jquery.min.js"></script>

<script>

;(function($){

    $.fn.tab=function(options){

        var defaults={

            //各种参数,各种属性

            currentClass:'current',

            tabNav:'.tab_nav>li',

            tabContent:'.tab_content>div',

            eventType:'click'

        }

        var options=$.extend(defaults,options);

        this.each(function(){

            var _this=$(this);

            _this.find(options.tabNav).on(options.eventType,function(){

             $(this).addClass(options.currentClass).siblings().removeClass(options.currentClass);

             var index=$(this).index();

             _this.find(options.tabContent).eq(index).show().siblings().hide();

            });

        });

        return this;

    }

})(jQuery);

$(function(){

$('.tab').tab({

eventType:'mouseover'

});

})

</script>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值