2019独角兽企业重金招聘Python工程师标准>>>

1. 对JQuery自身的扩展插件

顾名思义,这种插件是对JQuery自身的方法库进行扩展的。在使用的时候通过$.MethodName()的方式直接使用。
插件代码示例:

$.extend({   
handleTableUI : function (table){   
varthisTable = $( "#" + table);   
          
$(thisTable).find( "tr" ).bind( "mouseover" , function () {   
$( this ).css({ color: "#ff0011" , background: "blue" });   
});   
$(thisTable).find( "tr" ).bind( "mouseout" , function () {   
$( this ).css({ color: "#000000" , background: "white" });   
});   
}   
});

示例说明:当要对JQuery自身进行扩展的时候,需要采用$.extend();的形式进行开发,JQuery的extend()方法为我们提供了扩展JQuery自身的方式,在extend()方法中,我们采用{...}的形式编写具体的方法体。其中,最重要的是要定义我们自己的扩展方法,如示例中的handleTableUI。定义的方式是:方法名 : function(参数){ 方法体 }。通过此种方式我们就可以定义JQuery自己的扩展方法,而且这个方法可以在web页面通过智能提示显示出来。页面中调用的代码如下:

<scripttype= "text/javascript" >   
$(document).ready( function () {   
$.handleTableUI( "newTable" );   
});   
</script>

对HTML标记或页面元素进行扩展
使用这种插件的扩展方式,在使用此插件时,需要首先引用经过JQuery包装的页面元素,如:$("#tableId").Method()。
插件代码示例:

( function ($){  
$.fn.tableUI = function (options){  
var defaults = {  
evenRowClass: "evenRow" ,  
oddRowClass: "oddRow" ,  
activeRowClass: "activeRow"
}  
var options = $.extend(defaults, options);  
this .each( function (){  
var thisTable=$( this );  
//添加奇偶行颜色 
$(thisTable).find( "tr:even" ).addClass(options.evenRowClass);  
$(thisTable).find( "tr:odd" ).addClass(options.oddRowClass);  
//添加活动行颜色 
$(thisTable).find( "tr" ).bind( "mouseover" , function (){  
$( this ).addClass(options.activeRowClass);  
});  
$(thisTable).find( "tr" ).bind( "mouseout" , function (){  
$( this ).removeClass(options.activeRowClass);  
});  
});  
};  
})(jQuery);

这里重点说一下这一句

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

这里其实就是合并多个对象为一个。这里就是,如果你在调用的时候写了新的参数,就用你新的参数,如果没有写,就用默认的参数。

当要对页面元素进行JQuery扩展时,需要采用(function($){...})(JQuery);的方式进行开发。在“...”处,定义我们自己的方法,定义方式是:$.fn.自定义方法名 = function(参数){...};的形式定义扩展方法的具体内容。在页面调用的时候不同于对JQuery自身的扩展。具体调用代码如下:

3. 不要用在页面显式调用JQuery的方法,而是通过直接添加JQuery插件脚本引用,即可实现对该插件的调用。

一般,如果需要用到一些全局的JQuery插件,即:插件的方法不需要显式调用,而是引用脚本即可;同时,这种插件一般对整个Web页面起到全局配置或设置的作用,如:对<body></body>内部的内容进行整体布局,此时可以采用脚本引用的方式实现。

插件代码示例:

( function ($) {   
$.tableUI = { set: function () {   
varthisTable = $( "table" );   
$(thisTable).find( "tr" ).bind( "mouseover" , function () {   
$( this ).css({ color: "#ff0011" , background: "blue" });   
});   
$(thisTable).find( "tr" ).bind( "mouseout" , function () {   
$( this ).css({ color: "#000000" , background: "white" });   
});   
}   
};   
//此处需要进行自调用   
$( function () {   
$.tableUI.set();   
});   
})(jQuery);

示例说明:如果上面这段代码在my.plugin.js文件中,那么,我们只需要在页面上添加对此脚本文件的引用即可,引用方式为:<scriptsrc="Scripts/my.plugin.js"type="text/javascript"></script>,当然,在所有要用到JQuery的地方,需要首先添加对JQuery库脚本的引用。在引用型插件的代码中,最主要的就是在插件中要主动调用自己所写的插件方法,上面代码中有注释的地方。否则,我们写的插件代码将不会起作用。

二、插件的基本要点

在编写插件的时候,我们需要记住这些要点,虽然不照着这么做不会影响使用,但是要是你的插件是不规范的代码,那何必花苦心思去写插件。

jQuery插件的文件名推荐命名为jquery.[插件名].js,以免和其他JavaScript库插件混淆。例如命名为jquery.color.js。

所有的对象方法都应当附加到jQuery.fn对象上,而所有的全局函数都应当附加到jQuery对象本身上。

在插件内部,this指向的是当前通过选择器获取的jQuery对象,而不像一般的方法那样,例如click()方法,内部的this指向的是DOM元素。

可以通过this.each来遍历所有元素。

所有的方法或函数插件,都应当以分号结尾,否则压缩的时候可能出现问题。为了更稳妥些,甚至可以在插件头部先加上一个分号,以免他人的不规范代码给插件带来影响。具体方法可以参考后面的代码。

插件应该返回一个jQuery对象,以保证插件的可链式操作。除非插件需要返回的是一些需要获取的量,例如字符串或者数组等。

避免在插件内部使用$作为jQuery对象的别名,而应使用完整的jQuery来表示。这样可以避免冲突。当然,也可以利用闭包这种技巧来回避这个问题,使插件内部继续使用$作为jQuery的别名。很多插件都是这么做的,本教程也会利用这种形式。

OK,以上就是我对JQuery插件的几点理解,希望对大家能有所帮助,也希望大家在使用的过程中能及时反馈相关信息。

转载于:https://my.oschina.net/u/876290/blog/391429

jquery 插件闭包相关推荐

  1. 自己动手开发jQuery插件

    因为工作需要,所以这几天琢磨了一下关于jQuery插件开发的问题,经过一天鏖战,终于完成自己动手做的第一个jQuery插件,对于俺这种见了css就蛋疼菊紧的人来说,一天时间8小时,保守估计有5个小时在 ...

  2. jquery插件分类与编写详细讲解

    1. 插件种类 插件其实就是对现有的方法(或者叫函数)做一个封装,方便重用提高开发效率.   jQeury主要有2种类型   1)实例对象方法插件 开发能让所有的jquery实例对象都可以调用的方法. ...

  3. 如何编写一个Jquery插件

    首先我们来搞清楚一些关于Jquery插件的知识: 一.插件的种类: 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件 封装全局函数的 ...

  4. jquery插件之选项卡

    jQuery插件编写 首先来一个简拓展jQuery对象的方法 <body > <p>23</p> <script src="js/jquery-1. ...

  5. [置顶]       编写自己的JQUERY插件

    如何编写自己的jquery插件 Jquery的插件主要分为三类: 1.封装对象方法的插件:大部分插件都是封装对象的插件 2.封装全局函数的插件:将独立的函数添加到jquery的命名空间之下.Jquer ...

  6. 写JQuery 插件 什么?你还不会写JQuery 插件

    http://www.cnblogs.com/Leo_wl/p/3409083.html 前言 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui ...

  7. 用一个案例介绍jQuery插件的使用和写法

    我们在做web的时候都会用到很多jQuery插件,这些插件可以很方便的使用.但对于初学者来说想要修改插件中的一些功能,或者想要自定义插件却不是容易的事情.自己也刚好在学习这部分的知识,这里用一个案例来 ...

  8. 10条建议让你创建更好的jQuery插件(转载)

    为了避免重复造轮子,自己手动开发jquery 插件,让小组其他成员可以直接使用.学习开发中,看到Phillip Senn 写的 关于jquery 插件开发注意10点,转载之! ------------ ...

  9. 让你更好的使用jQuery插件

    在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...

最新文章

  1. Linux使用imagemagick的convert命令压缩图片、节省服务器空间
  2. Oracle错误:ORA-27121: unable to determine size of shared memory segment
  3. git版本库--常用命令
  4. linux系统安装xhprof,LNMP部署laravel与xhprof安装使用
  5. PHP生产一个验证码图片,PHP使用GD库生成验证码图片,实现图片验证
  6. 数据库:mysql内置功能-函数
  7. webbrowser只对浏览器外应用程序以及在_常用浏览器大盘点!
  8. TOGAF架构学习总结
  9. 盛大 传奇 的网游启示录
  10. 【Adobe Premiere Pro 2020】pr模板下载和pr使用模板创建视频、pr调色说明、pr全景视频编辑说明、pr无缝转场特效制作流程、pr保存预设效果和pr使用预设效果
  11. w ndows7如何清理垃圾,Win7系统清理:如何清理Win7系统盘垃圾
  12. Python+Cartopy绘制中国地图
  13. git合并——衍合于挑拣(cherry-pick)——只合并某个commit
  14. LTE中资源数量映射用到的PRB数量(TB,CQI,MCS,PRB)
  15. 好奇心和求知欲是什么
  16. vue run dev报错 缺少package.json文件、missing dev 命令 解决办法
  17. 虚拟地址,虚拟地址空间, 交换分区
  18. FreeRDP 2.0 for Windows 编译
  19. 内存屏障 Memory Barriers
  20. 如何给自己的网站添加 gitalk 评论系统

热门文章

  1. 别为iptables日志付出太多-一种Linux防火墙优化方法
  2. jackson 实体转json json字符串转实体
  3. asyncio协程与并发
  4. python 学习DAY03
  5. 使用支持向量机训练mnist数据
  6. Objective-C之category
  7. XCTF-高手进阶区:Web_php_unserialize(详解)
  8. 《光棍节程序员闯关秀》闯关攻略
  9. codeigniter mysql -1_在CodeIgniter中使用现有的MySQL数据库
  10. 台式计算机防盗锁怎么安装,防盗门锁怎么拆装 防盗门锁拆装步骤【详细介绍】...