美文网首页
jquery插件的两种形式

jquery插件的两种形式

作者: MakingChoice | 来源:发表于2016-05-04 10:48 被阅读177次

这里总结一下jquery插件的两种形式,一种是通过字面量的形式组织代码,另一种是通过构造函数的方式。下面就两种形式来分析俩个例子。<p>
例子1:

;(function ($,window,document,undefined) {
        $.fn.changeColor= function (option) {
            var defined={
                width:"400",
                height:"500",
                color:"red",
                module:"animate"
            };
            var setting= $.extend({},defined,option);
            var func={
                changeColor: function (obj,setting) {
                    obj.css({
                        width:setting.width,
                        height:setting.height,
                        backgroundColor:setting.color
                    })
                },
                animateColor: function (obj, setting) {
                    obj.animate({
                        width:setting.width,
                        height:setting.height,
                    },3000)
                }
            };
            return this.each(function () {
                if(setting.module==="animate"){
                    func.animateColor($(this),setting);
                }else if(setting.module==="css"){
                    func.changeColor($(this),setting);
                }
            })
        }
        

    })(jQuery,window,document);

通过代码可以看到,所有的局部函数都放在了<code>$.fn.changeColor</code>中,在里面通过<code>func</code>这个对象来组织函数,最后通过<code>return </code>把jquery对象返回出去实现链式调用。<p>
例子2:

;(function ($,window,document,undefined) {  
        var changeStyle= function (option) {
            var defined={
                width:"500",
                height:"300",
                color:"red"
            };
            this.setting= $.extend({},defined,option);
            console.log(this.setting)
        };
        changeStyle.prototype={
            styleColor: function (ele) {
                return ele.css({
                    backgroundColor:this.setting.color
                })
            },
            styleWidth: function (ele) {
                return ele.css({
                    width:this.setting.width
                });
            },
            styleHeight: function (ele) {
                return ele.css({
////这里的return为的是在返回change.styleWidth()这个函数的基础上,把ele暴露出去。
                    height:this.setting.height
                })
            }
        };
        $.fn.changeStyle= function (option) {
            var change=new changeStyle(option);
            if(option.style==="width"){
                return change.styleWidth($(this));
//这里的return为的是返回change.styleWidth()这个函数,暴露出去。
            }else if(option.style==="height"){
                return change.styleHeight($(this));
            }else if(option.style==="color"){
                return change.styleColor($(this))
            }
        }

})(jQuery,window,document);

上面的例子中采用的是构造函数的方式,先在<code>changeStyle</code>函数中传入参数并挂接到原型上,等待后续调用。然后把具体的函数,挂接到原型对象上,<code>changeStyle.prototype</code>。这里需要注意的两点是这里用到了两次<code>return</code>,为的是能把jqery对象暴露到外层,供调用。

相关文章

  • jquery插件的两种形式

    这里总结一下jquery插件的两种形式,一种是通过字面量的形式组织代码,另一种是通过构造函数的方式。下面就两种形式...

  • jQuery插件机制

    为了方便用户创建插件,jQuery提供了两种方法来扩展插件,分别是jQuery.extend()和jQuery.f...

  • jQuery插件开发结构

    开发jQuery插件的方式 可以通过两种方式开发jquery插件类级别方式:即给jquery命名空间下添加新的全局...

  • JS 插件开发

    jQuery 插件两种函数的开发: 1. 类级别的插件开发:类级别的插件开发最直接的理解就是给 jQuery 类添...

  • $.fn.extend和$.extend

    jquery 的$.fn的含义,这个是jquery插件的形式,举个例子: (function($){ $.fn.e...

  • JQuery 插件扩展

    jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类...

  • 【转】理解jquery的$.extend()、$.fn和$.fn

    jquery插件的开发包括两种: 一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jquery类...

  • JS插件(JQuery形式)

  • 常用网址

    特效插件网址 jQuery插件库-收集最全最新最好的jQuery插件 jquery特效,jquery插件库,jqu...

  • jQuery对Cookie的操作

    需要用到的插件:jquery.cookie.js 点击设置按钮,通过插件以键值对的形式存在cookie信息;点击获...

网友评论

      本文标题:jquery插件的两种形式

      本文链接:https://www.haomeiwen.com/subject/sayrrttx.html