zoukankan      html  css  js  c++  java
  • Jquery插件开发

          直到最近写一个小功能的时候灵机一动,才想起来尝试着写很早以前就想进行的插件开发。更郁闷的是,直到写插件的时候,才深刻的明白什么叫面向对象!(不知道都怎么想的,我在qq空间里发这句话的时候大家都评论,“脱单了?”“有对象了?”更有甚者,"我明白,程序员的对象就是代码",此言到是不虚。)

          参考了很多网上资料,然后对比,最后还是参照刘哇勇的博客(http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html)弄的第一个简单插件,这里记录一下完整的插件格式和相关注释,方便快速开发,分享就是快乐嘛。

    ---------------------------------------------------------------------- 2015-07-27 ---------------------------------------------------------------------------

      每过一段时间回头看自己写的东西,都觉得之前的有问题。。。现在补充一下。

      实际采用的是组合使用构造函数模式和原型模式。

    //这里可以以注释的形式写上版本号,插件用途,版权,插件使用格式等等等等

    //加上 ; 能防止前面代码没有 ; 结尾的后果,无惧压缩。如果用jsFormat格式化后;会在上面一行,jsHint会不通过,移下来就行了

    ;(function($,window,document,undefined){ //undefinde是真实的undefined,因为传入时并没有传 //定义构造函数(对象) var Datalist=function(ele,opt){

         //构造函数的属性或方法,每个实例均拥有副本
    this.$element=ele; this.defaults={ //定义默认属性 '默认属性名':'对应属性值' }; this.options=$.extend({}, this.defaults, opt); //在使用的时候会自动执行$.extend()函数,让用户自定的属性值覆盖default里面默认的属性值。前面加上{}空对象是为了防止多次调用时前面的属性值修改了默认属性值,详情见对象的深复制一章
    }; //所有以字面量赋值形式的函数,不要忘了;
    //在原型上定义方法,供所有的实例调用 Datalist.prototype={ //注意,这是以对象字面量形式创建的新对象,constructor属性不再指向Datalist,详情见深复制与对象一文中的原型模式
    showList:
    function(){ var color=this.options.bgcolor; //值的传递形式(最好这里把需要的全部取出来,毕竟在不同环境下this的指代不一样)         
           //这里是具体的实现过程书写区域
    return this; //return是为了不破坏jquery链式调用的特点(注意return的对象是原对象),也可以以返回值的形式回调一个函数 },
         showList2:function(){
           //...
         } };
    //将方法添加到jquery对象的原型上 $.fn.myDatalist=function(options){
    //创建实例 var datalist=new Datalist(this,options);
    //以返回值调用的形式调用其方法 return datalist.showList(); }; })(jQuery,window,document); //其实就是 (function(){}());的闭包形式,定义匿名函数并立即调用,里面的事件绑定什么的就像在全局定义一样的可以用(页面关闭的时候才销毁),但是全局空间里面是不可见不可取得的


     //在需要的地方调用插件
    $(document).ready(function(){
       $(object).myDatalist({"属性名":"属性值"}); //没有设置的属性会用默认值
    });

          具体的实例可以参见myBoxScroll。github:https://github.com/codetker/myBoxScroll。在线演示:http://www.梦萦无双.xyz/myBoxScroll/Default.html。

          接下来是我改写的常用插件(以前都是面向过程,用一次写一次。。。),希望能帮上和我一样的菜鸟咯。

  • 相关阅读:
    make学习笔记(一)
    进程学习笔记(二)进程间通信
    背包入门(01背包,完全背包,多重背包)
    线程学习笔记(一)
    设计模式学习笔记
    Python学习笔记(一)
    poj1276(多重背包)裸题
    【树莓派】树莓派小车(二)树莓派、小车和红外线模块连接(多图)
    【Java Web】IDEA如何创建及配置Web项目(多图)
    【树莓派】树莓派小车(一)小车配件选购及安装(多图)
  • 原文地址:https://www.cnblogs.com/codetker/p/4643734.html
Copyright © 2011-2022 走看看