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

  插件的种类

    jQuery的插件主要分为3种类型。

    1. 封装对象方法的插件

       这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件。

    2. 封装全局函数的插件 

       可以将独立的函数加到jQuery命名空间之下。如解决冲突用的jQuery.noConflict()方法,常用的jQuery.ajax()方法以及去除首位空间的jQuery.trim()方法等。

    3. 选择器插件

       个别情况下,会需要用到选择器插件。例如用:color(red)来选择所有红色字的元素之类的。

  插件的基本要点

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

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

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

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

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

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

    ⑦  避免在插件内部使用$作为jQuery对象的别名,而应使用完整的jQuery来表示,这样可以避免冲突。当然,也可以使用闭包技巧来回避这个问题,使插件内部使用$来作为jQuery的别名。

  jQuery插件的机制

    jQuery提供了两个扩展jQuery功能的方法,即jQuery.fn.extend()方法和jQuery.extend()方法。前者用于扩展之前提到的3种类型插件中的第一种,后者用于扩展后两种插件。这两个方法都接受一个参数,类型为Object。Object对象的“名/值对”分别代表"函数或方法名/函数主体"。

    jQuery.extend()方法除了可以用于扩展jQuery对象之外,还有一个很强大的功能,就是用于扩展已有的Object对象。

    jQuery.extend()方法经常被用于设置插件方法的一系列默认参数,如:

 function foo(options) {
options = jQuery.extend({
name: "bar",
length: 5,
dataType: "xml" /* 默认参数*/
}, options); /* options为传递的参数 */
};

    在传递的参数options对象中设置了相应的值,那么就使用设置的值,否则使用默认值。

  编写jQuery插件

      1.封装jQuery对象方法的插件.

 ;(function($) {
jQuery.fn.extend({ // $.fn.extend({
"color": function(value) {
return this.css("color", value);
}
});
})(jQuery);

      2.封装全局函数的插件

        这类插件是在jQuery命名空间内部添加一个函数。利用jQuery.extend()方法直接对jQuery对象进行扩展。

 ;(function($) {
$.extend({
ltrim: function(text) {
return (text || "").replace(/^\s+/g, "");
},
rtrim: function(text) {
return (text || "").replace(/\s+$/g, "");
}
});
})(jQuery);

        使用函数方式jQuery.ltrim("  test  "),jQuery.rtrim("   test    ");

      3.自定义选择器

        自定义选择器个人感觉使用会少一些。目前只需要了解下就可以了,感兴趣的可以查看《锋利jquery》7.6.5 编写jQuery插件

    最后,以上算是个人看书的笔记,浓缩知识点,提高学习的效率,查阅的便捷。

编写jQuery插件的方法和注意点的更多相关文章

  1. 扩展编写jquery插件的方法

    比如要扩展验证功能(jquery.validate.js)中的 messages: { required: "This field is required.", remote: & ...

  2. 编写jQuery插件--实现返回顶部插件

    国庆过去一周多了,作为IT界的具有严重’工作狂‘性质的宅人,居然还没走出玩耍的心情,拖了程序猿的脚后跟了.最近工作不顺,心情不佳,想吐槽下公司,想了还是厚道点,以彼之道还施彼身,觉得自己也和他们同流合 ...

  3. 编写jQuery插件(一)——插件约定及插件中的闭包

    编写插件的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,提高开发效率和方便后期维护. 在编写jQuery插件的时候,我们一般会遵循一些约定: jQuery插件推荐命名为:jque ...

  4. 自己编写jQuery插件之表单验证

    自己编写jQuery插件之表单验证 吐个嘈先:最近状态不咋滴,真是什么都不想干,不想上班,做什么都没动力,觉得没意思.不想这样,不想这样,快让这种情绪消失吧,忽忽.... 表单验证在项目中用的还是比较 ...

  5. jQuery插件制作方法详解

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

  6. 自己编写jQuery插件之Tab切换

    自己编写jQuery插件之 Tabs切换 jquery ui 带有Tabs切换插件,但其css样式太难维护,引用的东西太多,因此就自己写了个. 起初我Html代码架子是这样的: <div cla ...

  7. 如何编写JQuery 插件详解

    转载自:http://blog.sina.com.cn/s/blog_6154bf970101jam7.html 如今做web开发,jquery 几乎是必不可少的,就连vs神器在2010版本开始将Jq ...

  8. JQuery 插件一般方法

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

  9. 如何用正确的姿势编写jQuery插件

    在园子里有很多关于jQuery插件的文章,尤其 以下2篇文章: 不定义JQuery插件,不要说会JQuery jQuery插件开发精品教程,让你的jQuery提升一个台阶 这2位大神基础讲的很清楚,在 ...

随机推荐

  1. QT QSettings读写配置文件

    QT QSettings读写配置文件 需要用一个配置文件来保存程序的初始值,同时也需要做保存修改后的值. 那么借助于QSetting 就可以达到目的. 注意,生成的是 ini 文件! //1.创建和读 ...

  2. [已转移]JavaScript事件---DOM事件流

    该文章已转移到博客:https://cynthia0329.github.io/ 事件发生时会在元素节点与根节点之间按照特定的顺序传播,路径所经过的所有节点都会收到该事件 这个传播过程即DOM事件流. ...

  3. 笔记:在 Windows 10 WSL Ubuntu 18.04 安装 Odoo12 (2019-06-09)

    笔记:在 Windows 10 WSL Ubuntu 18.04 安装 Odoo12 原因 为了和服务器一样的运行环境. 使用 Ubuntu 运行 Odoo 运行更快. 方便使用 Windows 10 ...

  4. C++返回值优化

    返回值优化(Return Value Optimization,简称RVO)是一种编译器优化机制:当函数需要返回一个对象的时候,如果自己创建一个临时对象用于返回,那么这个临时对象会消耗一个构造函数(C ...

  5. [iOS开发系列]根据Debug和Release状态的变化来屏蔽日志输出

    今天在这里分享一个很实用的小技巧. 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理. 我们在发布正式版的时候一定要屏蔽掉所有 ...

  6. MyBatis映射文件的基本功能

    #{}与${}区别 "#{}"使用的是preparedStatement方式预处理,就是使用了占位符来填充数据防止SQL注入. ${}使用的是statement方式进行sql语句的 ...

  7. 巨蟒python全栈开发-第11阶段 ansible_project1

    今日大纲: 1.前端页面介绍 2.发布流程 3.需求分析 4.表结构设计 5.前端页面设计 昨日内容回顾: 1.roles - tasks - handlers - files - templates ...

  8. SpringBoot @Transactional的rollbackFor属性

    1.简单回顾Java Exception 该图摘自:https://blog.csdn.net/zhangerqing/article/details/8248186 一方面,我们可以将异常分为运行时 ...

  9. 为什么不喜欢在 QQ 群里回答问题?

    为什么不喜欢在 QQ 群里回答问题? 没有主题,主题随时都在变. 回答后无法备份,当然自己有心可以总结一下. 实时性要求太强,可能回答但是突然有事离开,再回头看已经是 几十条的留言. QQ 群用来闲聊 ...

  10. tp3 key json 分页

    //json 强制转换为array $arr[$key]['checkpro'] = json_decode($val['checkpro'],JSON_FORCE_ARRAY);    $arr[$ ...