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.我曾经也是这样的人,直 ...
随机推荐
- 子查询在INSERT语句中的应用
在使用INSERT语句的时候,一般都是使用它向数据库中一条条的插入数据,比如: INSERT INTO MyTable(FId,FName,FAge)VALUES(1,"John" ...
- luogu P2485 [SDOI2011]计算器
题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给定y.z.p,计算 ...
- [BZOJ4818][SDOI2017]序列计数(动规+快速幂)
4818: [Sdoi2017]序列计数 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 972 Solved: 581[Submit][Status ...
- JZYZOJ1369 [coci2012]覆盖字符串 AC自动机
http://172.20.6.3/Problem_Show.asp?id=1369 trie树如果不优化就这么往里面放这么多单词肯定超空间+超时,所以需要去掉无用的字符串(不属于原字符串的),但是一 ...
- NServiceBus入门:发送一个命令(Introduction to NServiceBus: Sending a command)
原文地址:https://docs.particular.net/tutorials/intro-to-nservicebus/2-sending-a-command/ 侵删. 能够发送和接收mess ...
- jquer总结
前端jq总结 选择器********************************************************************** 1,基本选择 器 #id .clss ...
- Index column size too large. The maximum column size is 767 bytes.
mysql建表时报Index column size too large. The maximum column size is 767 bytes.解决办法:在建表语句的后面加入:ENGINE=In ...
- 【mybatis】分别按照 天 月 年 统计查询
页面统计想通过 天 月 年 分别来展示统计效果, 那么查询SQL拼接如下: select *, <if test="groupType == 1"> DATE_FORM ...
- C语言基本数据类型简介
1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型.整形和长整形. 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位 ...
- Spring @Autowired 注解不生效
@Autowired默认不生效.为了生效,需要在xml配置:<context:annotation-config> 注解一<context:component-scan base-p ...