如何编写自己的jquery插件

27 篇文章 0 订阅

转  http://wenku.baidu.com/view/914ff757804d2b160b4ec075.html


Jquery的插件主要分为三类:

1、封装对象方法的插件:大部分插件都是封装对象的插件

2、封装全局函数的插件:将独立的函数添加到jquery的命名空间之下。Jquery.ajax()jquery.trim()就是jquery内部作为全局函数的插件添加到内核上去的。

3、选择器插件:扩充自己喜欢的一些选择器。

 

编写Jquery插件的基本要点:

、一般命名的时候最好是按照jquery.[插件名].js命名。

所有的对象都应当附加到jquery.fn对象上,所有的全局函数应该附加到jquery对象本身上

通过this.each()来便利对象,这里的this指向的是当前选择器通过选择器获取的jquery对象

所有的方法或者函数插件都要以分号结尾,否则压缩的话就会出现问题,有时候甚至要在头部也要加上“;”,以免不规范的代码给写的插件带来影响。

插件应当返回一个jquery对象,以便可以进行链式操作,除非你是要返回某个特定类型的参数,比如字符串和数组。

要注意$jquery两个符号的冲入,可以利用闭包这种技术来回避这个问题。

 

允许使用内部函数,而且,这些内部函数可以访问他们所在的外部函数中声明的局部变量参数和声明的其他的内部函数,当其中一个这样的内部函数在包含他们的外部函数之外被调用时,就会形成闭包。

闭包是一个很复杂的概念,对于编写jquery插件其实是有一个模板的,这个模板中就有用到闭包的概念。

 

常见的jquery插件的都是有如下的格式的:

;(function($){   

$.fn.yourName = function(options){  //各种属性、参数

}

       var options = $.extend(defaults, options);//定义参数

       this.each(function(){

        //插件实现代码

       });

    };

})(jQuery);

注解:

(1)“;(function($){   })(jQuery);”使用了匿名函数,表示在方法体内的”$”表示的就是”jquery”,为了有更好的兼容性,所以在前面添加一个分号

,这里的$符号是作为匿名函数的形参

(2)$.extend(defaults, options);表示的是如果options中的参数总是有值的话,那么options中的值将会代替defaults中的值。举个例子来说:

Var setting={validate:true,limit:5,name:foo};

Var options={validate:fasle,name:tom};

Var newoptions=$.extend(settingoptions)

那结果就是newoptions={validate:false,limit:5,name:tom}.

所以Jquery.extend()(或者是$.extend())经常来设置插件的一些默认的参数。

还有就是$.extend()用来扩展方法,和jquery.fn.extend()一样都是可以的,他们的区别在于:前者不使用jquery的方法,而后者使用了jquery的方法,就像 addClass(),remove()等。所以可想而知大部分的现有插件都是jquery.fn.extend()进行扩展的。

 

function foo(options){

options=jquery.extend({

Name“bar”,

Length5

dataType:”xml”

},options);

};

如果options参数传入的值为空,那么就可以使用默认设置的值。

 

例子:

;(function($)){

$.fn.extend({

“functionname”function(options){//某个方法名

Options=$.extend({

odd:”odd”,

even:”even”

},options);

//可以通过options.元素名称来获取元素之,如options.odd

//some codes

$(“.table”).addClass(“”);//为某个元素添加样式等等

}

//一个方法结束

//另一个方法 this.cleartb = function() {//同时你也可以这么写,这里cleartb就是方法的名称     $('#emed_tb01').remove();//方法要做的事情 }

});

}

 

那我们在使用的时候就可以:

$(“#id_”).cleartb();//选中id“id_”的元素执行上面插件中的cleartb的方法。

 

下面给出一个完整的插件的例子供参考:这个插件是一个消息提示的插件,

 

 

;(function($){

    $.fn.manhuaTip = function(options) {//扩展函数manhuaTip

        var defaults = {//默认值

            Event : "click",

            timeOut : 2000

        };

        var options = $.extend(defaults,options);//以传参覆盖

        var $tip = $(this);//选定操作的jquery元素为当前选中的元素

        $tip.live(options.Event,function(e){   

            var type = $(this).attr('ty');       

            var msg = $(this).attr('msg');

              var tipHtml = '';

            if (type =='loading'){

                tipHtml = '<img alt=""src="../images/loading.gif">'+(msg ? msg : '正在提交您的请求,请稍后...');

            } elseif (type =='notice'){

                tipHtml = '<spanclass="gtl_ico_hits"></span>'+msg

            } elseif (type =='error'){

                tipHtml = '<span class="gtl_ico_fail"></span>'+msg

            } elseif (type =='succ'){

                tipHtml = '<spanclass="gtl_ico_succ"></span>'+msg

            }

            if ($('.msgbox_layer_wrap')) {

               

                $('.msgbox_layer_wrap').remove();

            }

            if (st){

                clearTimeout(st);

            }

            $("body").prepend("<div class='msgbox_layer_wrap'><spanid='mode_tips_v2' style='z-index: 10000;' class='msgbox_layer'><spanclass='gtl_ico_clear'></span>"+tipHtml+"<spanclass='gtl_end'></span></span></div>");

            $(".msgbox_layer_wrap").show();

            var st = setTimeout(function (){

                $(".msgbox_layer_wrap").hide();

                clearTimeout(st);

            },options.timeOut);

        });   

    }

 

   

})(jQuery)

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值