参考 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插件定义方法的更多相关文章

  1. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  2. jQuery插件制作方法详解

        jQuery插件制作方法详解   jquery插件给我的感觉清一色的清洁,简单.如Jtip,要使用它的功能,只需要在你的元素的class上加 上Jtip,并引入jtip.js及其样式即可以了. ...

  3. JavaScript jQuery 中定义数组与操作及jquery数组操作 http://www.jb51.net/article/76601.htm

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  4. 编写jQuery插件的方法和注意点

    编写jQuery插件的方法和注意点 插件的种类 jQuery的插件主要分为3种类型. 1. 封装对象方法的插件 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的 ...

  5. jQuery插件扩展方法

    jQuery为扩展插件提拱了两个方法,分别是: jQuery.extend(object) —— 给jQuery对象添加方法. jQuery.fn.extend(object) —— 为扩展jQuer ...

  6. JQuery插件定义

    一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写$("#"),$("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人 ...

  7. JQuery : 插件定义

    来源:http://www.cnblogs.com/xcj26/p/3345556.html 一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写("#"), ...

  8. JQuery 插件一般方法

    如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jquery 及ui 内置web项目里了.至于使用jquery好处这里就不再赘述了,用过的都知道.今天我们来讨论下jq ...

  9. 【转】JQuery插件定义

    一:导言 有些WEB开发者,会引用一个JQuery类库,然后在网页上写一写("#"),("."),写了几年就对别人说非常熟悉JQuery.我曾经也是这样的人,直 ...

随机推荐

  1. sed 插入和替换

    sed -i '/参考行/i\插入内容' *.ksh sed -i 's,原内容,替换后内容,g' *.ksh

  2. Codeforces 980 E. The Number Games

    \(>Codeforces \space 980 E. The Number Games<\) 题目大意 : 有一棵点数为 \(n\) 的数,第 \(i\) 个点的点权是 \(2^i\) ...

  3. [BZOJ5251][九省联考2018]劈配(网络流)

    5251: [2018多省省队联测]劈配 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 33  Solved: 22[Submit][Status][ ...

  4. SNOI2017(BZOJ5015~5018)泛做

    T1:礼物 想错方向了,实际上很简单. 我想的是:显然题目求的是$\sum_{i=1}^{n} i^{k}2^{i}$,然后或许可以通过化式子变成与n无关的复杂度? 然后就不停往斯特林数反演和下降幂的 ...

  5. [LOJ2553]暴力写挂

    锟题x2 以下用$a\rightarrow b$表示端点为$a,b$的链 把式子写成$(h_1(x)+h_1(y)-h_1(lca))-h_2(lca')$,第一部分就是$x\rightarrow r ...

  6. 5月学习总结(Ant-Design,mustache,require.js,grunt)

    一.Ant-Design学习 因为Ant-Design是基于React实现的,之前自己也学过一段时间的React,对React还是相对比较熟悉的,在学习Ant-Design也还不算吃力. 最开始是从源 ...

  7. mysql知识点汇总四

    1.表的垂直分割 “垂直分割”是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的.(以前,在银行做过项目,见过一张表有100多个字段,很恐怖) 示例一:在 ...

  8. 某游戏研究之字符过滤类-WorldFilter

    所谓字符过滤器,常常用在聊天的内容,比如一连串的骂人难听的话,我们要屏蔽掉,避免造成不好的东西! 当然我作为中华天朝一个有文明有素质的人,肯定偶尔会做这样的事情啦,特别是打LOL的时候,算了不讲了,都 ...

  9. iOS:ShareSDk的分享

    使用分享类的SDK其实有很多,例如友盟.ShareSDK等等,参照他们的文档集成起来并不是很难,可能出的一些问题也就是配置文件的问题,这里我个人使用了ShareSDK分享,具体操作可出现的问题如下: ...

  10. XSS之浪潮已经来临

    前些天和Roy厉在微博上聊到微信公众账号,我说我在辛苦运营“网站安全中心”这个账号呢,他说我这账号粉丝少是少了点,不过用户定位精确,我说我不希望精确,因为我在尽可能写科普,科普需要传播. Roy厉说过 ...