JavaScript | JQuery插件定义方法
参考 http://www.2cto.com/kf/201507/417874.html
—————————————————————————————————————————————————————————
插件开发- 两种
类级别 - 三种
jQuery.extend(object);为扩展jQuery类本身,为类添加新的方法。
- 添加全局函数
$.foo1 = function() {
// code
}
$.foo2 = function(param) {
// code
}
$.foo1();
$.foo2(1);
- 使用jQuery.extend(object)添加全局函数 ;
禁止使用js的函数名和变量名 , 但仍有可能与其他jquery插件冲突 , 所以使用下面的方式封装到另一个命名空间中
$.extend({
foo1: function() {
// code
},
foo2: function() {
// code
}
});
- 采用命名空间的方式封装全局函数
$.myPlugin = {
foo1: function() {
// code
},
foo2: function(param) {
// code
}
}
$.myPlugin.foo1();
$.myPlugin.foo2(1);
对象级别
jQuery.fn.extend(object);给jQuery对象添加方法。
jquery本身是一个封装好的类;
$("#myDiv")会生成一个jquery类的实例;
通过jQuery.fn.extend可以对jquery.prototype进行扩展,为jquery类添加成员函数,所有的jquery类实例都可以使用这个成员函数
- 普通形式
定义了一个jQuery函数,将jQuery实参传递进去并立即调用执行;
好处是在写jQuery插件时也可以使用$这个别名,不会与prototype冲突;
metisMenu侧边栏下拉插件也是以这种形式写的
p.s.尽量在自调用函数前加分号,见文章底部细节说明
(function($) {
$.fn.pluginName = function() {
// code
}
})(jQuery);
$("#mydiv").pluginName();
- 分解代码为多个函数而不增加命名空间
将函数制定为属性,我们已经声明pluginName为jquery属性对象;
任何其他的属性或函数需要暴露出来时,都可以在pluginName函数中被声明属性;
- 接受options参数控制插件的行为
(function($) {
$.fn.pluginName = function(option) {
var defaults = {
background: "yello",
foreground: "red"
};
}
var opts = $.extend(defaults, options);
// plugin code
})(jQuery);
$("#mydiv").pluginName({
foreground: "blue"
});
- 暴露插件的默认设置
$.fn.pluginName = function(options) {
var opts = $.extend({}, $options);
};
$.fn.pluginName.default = {
foreground: "red",
background: "yellow"
};
- 样例
$.fn.extend({
plugin: function() {
$(this).click(function() {
// click event code
});
}
});
$("#input1").plugin();
<input id = "input1" type = "text" / >
—————————————————————————————————————————————————————————
细节
开头使用分号
加引号是为了防止多个js文件合并(脚本压缩)后运行异常,但由于目前(2015.4)普遍基于语法解析来进行压缩(UglifyJs)下,并不是必须的了,但通常作为分号教条;详解见 https://www.zhihu.com/question/29526862
;(function($, window, document, undefined) {
// code
})(jQuery, window, document);

JavaScript | JQuery插件定义方法的更多相关文章
- JavaScript jQuery 中定义数组与操作及jquery数组操作
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
- jQuery插件制作方法详解
jQuery插件制作方法详解 jquery插件给我的感觉清一色的清洁,简单.如Jtip,要使用它的功能,只需要在你的元素的class上加 上Jtip,并引入jtip.js及其样式即可以了. ...
- JavaScript jQuery 中定义数组与操作及jquery数组操作 http://www.jb51.net/article/76601.htm
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
- 编写jQuery插件的方法和注意点
编写jQuery插件的方法和注意点 插件的种类 jQuery的插件主要分为3种类型. 1. 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的 ...
- jQuery插件扩展方法
jQuery为扩展插件提拱了两个方法,分别是: jQuery.extend(object) —— 给jQuery对象添加方法. jQuery.fn.extend(object) —— 为扩展jQuer ...
- JQuery插件定义
一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人 ...
- JQuery : 插件定义
来源:http://www.cnblogs.com/xcj26/p/3345556.html 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写("#"), ...
- JQuery 插件一般方法
如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...
- 【转】JQuery插件定义
一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写("#"),("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人,直 ...
随机推荐
- 【数论】【莫比乌斯反演】【线性筛】hdu6134 Battlestation Operational
看这个题解吧:http://blog.csdn.net/wubaizhe/article/details/77338332 代码里顺便把几个常用的线性筛附上了. Key:1.gcd(i,j)==1利用 ...
- Visual Studio Image Library现在带矢量图标了
Visual Studio Image Library是微软提供的一套不可多得的高质量图标库(Visual Studio中自己使用的),我在自己写的一些小程序中一直有用到它们.今天天想把之前的程序中的 ...
- java多线程加锁是对谁加锁?
1.java多线程加锁是对谁加锁? 答:当然是对共享资源加锁啊,对谁进行访问修改,就对象进行加锁.以便使多线程按序访问此共享对象 比如: 在具体的Java代码中需要完成一下两个操作:把竞争访问的资源类 ...
- [Android实例] 推荐给你们一个好用的ListView、RecyclerView适配器
https://github.com/vihuela/RecyclerViewHelpper 如果用过RecyclerView的人都知道,高度不会包裹,然后写法好像也不是很简洁,甚至点击事件不好设 置 ...
- JCA 了解
JCA (J2EE 连接器架构,Java Connector Architecture)是对 J2EE标准集的重要补充.因为它注重的是将 Java程序连接到非Java程序和软件包中间件的开发.连接器特 ...
- zxing生成二维码和读取二维码
当然,首先要导入zxing的jar包. 生成二维码代码: package com.imooc.zxing; import java.io.File; import java.nio.file.Path ...
- 二十四种设计模式:抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式(Abstract Factory Pattern) 介绍提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 示例有Message和MessageModel,Messag ...
- c/c++在windows下获取时间和计算时间差的几种方法总结 【转】
http://blog.csdn.net/coder_xia/article/details/6566708 一.标准C和C++都可用 1.获取时间用time_t time( time_t * tim ...
- 摄像头模组 AWB(Auto White Balance)
本文转载yapingmcu的<图像算法---白平衡AWB(讲的很好)>.原文http://blog.csdn.net/yapingmcu/article/details/50637797 ...
- 将EC2的Sql Server 计划任务的方式备份到s3上
编写个powershell脚本 $server = '.' $database = 'databaseName' $s3Bucket = 's3bucket' $backupPath = 'D:\Ba ...