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

jQuery编写插件的两种方法

1.添加jQuery对象级的插件,是给jQuery类添加方法

写法:

  1. (function($){

  2. $.fn.extend({

  3. "函数名":function(自定义参数){

  4. //这里写插件代码

  5. }

  6. });

  7. })(jQuery);

  8. 或者

  9. (function($){

  10. $.fn.函数名=function(自定义参数){

  11. //这里写插件代码

  12. }

  13. })(jQuery);

调用方法:$("#id").函数名(参数);

2.jQuery类级别的插件,相当于添加静态方法

  1. (function($){

  2. $.extend({

  3. "函数名":function(自定义参数){

  4. //这里写插件代码

  5. }

  6. });

  7. })(jQuery);

  8. 或者

  9. (function($){

  10. $.函数名=function(自定义参数){

  11. //这里写插件代码

  12. }

  13. })(jQuery);

调用方法:$.函数名(参数);

1,先想好做个什么功能

这是第一步,也是很重要的一步,鉴于咱们都是刚学习写jQuery插件,所以,这个功能一定要简单一些。不要想一口就吃个胖子,咱也吃不了。咱还是捡个瘦的下手吧。但是,这个功能也不能太无聊,如果无聊到几乎没用处,就算做好了也是扔到马桶里,不会持续更新,也便不会持续进步了。

我最终选择的是:美化表格,让表格的奇偶行颜色不同,然后鼠标移到某行上,某行可以高亮显示。功能简单又实用,不错,不错。呵呵~~

2,不急着写,先想想实现原理

还不急,先想想实现原理。必要的时候,先写出简单的实现的原型。

我的这个美化表格的例子,实现原理倒是简单,无非就是找到表格的奇偶行,然后添加不同的class,活动行高亮显示也很简单,只要判断mouseover事件,然后添加一个class,mouseout的时候,再去掉这个class即可。

3,一个通用的框架

在动手写自己的jQuery插件之前,自然是先研究一下别人写的插件了。其实写jQuery也基本有一个通用的框架。行,那咱也把这框架照搬过来吧。

(function($){
    $.fn.yourName = function(options){
        //各种属性、参数
        }
        var options = $.extend(defaults, options);
        this.each(function(){
        //插件实现代码
        });
    };
})(jQuery);

有了这个,咱就可以往里面套东西了。

4,名号、参数和属性

好不容易开始闯荡江湖了,一定要有一个响亮的名号才行,这样走在江湖上,才能够屌,够威风。不信,你听听人家“中国牙防组”!所以,咱这里一定要起个响亮的名号,一定要简单、明了、够权威。所以,决定了,就叫做“tableUI”了!

参数和属性也很简单,无非就是三个class的名称。就叫做:evenRowClass、oddRowClass和activeRowClass吧。

所以,上面的框架,咱就把上半身给填上了。

(function($){
    $.fn.tableUI = function(options){
        var defaults = {
            evenRowClass:"evenRow",
            oddRowClass:"oddRow",
            activeRowClass:"activeRow"
        }
        var options = $.extend(defaults, options);
        this.each(function(){
            //实现代码
        });
    };
})(jQuery);

这里重点说一下这一句:

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

看上去很屌的一句,其实就是合并多个对象为一个。这里就是,如果你在调用的时候写了新的参数,就用你新的参数,如果没有写,就用默认的参数。想进一步了解的朋友,可以参考jquery的官方文档: http://api.jquery.com/jQuery.extend/

5,开始下半身吧

ok,上半身填补完了,咱就可以填补下半身吧。无非就是找到基数行和偶数行(感谢jQuery提供了类似tr:even这种写法,使其及其简单),然后添加上相应的class。然后再给所有的tr,绑定mouseover和mouseout事件即可。下半身代码如下:

(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);

6,最重要的一步!

也许有些朋友觉得这样就算是完成了。但是切切相反,我们还有最重要的一步没有完成,那就是一定要在插件上方,写上插件的名称、版本号、完成日期、作者,作者的联系方式、出生日期、三围……等等。因为只有这样才能显的这个插件够专业。

/*
 * tableUI 0.1
 * Copyright (c) 2009 JustinYoung  http://justinyoung.cnblogs.com/
 * Date: 2010-03-30
 * 使用tableUI可以方便地将表格提示使用体验。先提供的功能有奇偶行颜色交替,鼠标移上高亮显示
 */
(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);

转载于:https://my.oschina.net/u/1453975/blog/293294

自定义jQuery插件相关推荐

  1. jquery_jquery插件、jqueryUI使用方法、自定义jquery插件(一个插件其实就是一个功能)...

    1.jquery插件 比如:演示如下 注意复制代码时要注意引用文件的路径是不是对的. 2.jqueryUI jqueryUI里面集合了很多用jquery封装的小功能 比如:案例演示如下 3.可以自己封 ...

  2. Jquery自定义分页插件

    效果: 核心代码: 自定义Jquery插件grid.js //Jquery自定义分页插件 (function($) {$.fn.grid= function(options) {var objGrid ...

  3. ajax java 插件_对JQuery中Ajax应用与jQuery插件的理解与笔记

    Ajax有原生的和封装jQuery版的,感觉JQuery的写法比较简洁明了,不需要去兼容浏览器. 1 2 3 4 5 6 7 8 9 10 11 12 $(function(){ 13 $.ajax( ...

  4. jQuery学习笔记系列(三)——事件注册、事件处理、事件对象、拷贝对象、多库共存、jQuery插件、toDoList综合案例

    day03 - jQuery 学习目标: 能够说出4种常见的注册事件 能够说出 on 绑定事件的优势 能够说出 jQuery 事件委派的优点以及方式 能够说出绑定事件与解绑事件 能够说出 jQuery ...

  5. jquery系列教程7-自定义jquery插件全解:对象函数、全局函数、选择器

    点击打开: jquery系列教程1-选择器全解 jquery系列教程2-style样式操作全解 jquery系列教程3-DOM操作全解 jquery系列教程4-事件操作全解 jquery系列教程5-动 ...

  6. 前端三件套系例之JQuery——JQuery动画效果、JQuery插件、

    文章目录 1 JQuery动画效果 1. 基本效果 2. 滑动效果 3 淡入淡出效果 4 自定义动画 5 动画控制 6 设置 7 事件 7-1 常用事件 7-2 事件绑定 7-3 移除事件 7-4 阻 ...

  7. 自定义添加关键词Tag标签jquery插件

    下载地址 一款点击添加关键词Tag标签jquery插件,此款jquery插件不仅可以自定义输入关键词标签,还可以展开选择已有关键词标签,当关键词标签内容比较多时可以点击换一换来切换下一页 dd:

  8. 【JQUBAR1.1】jQuery 插件发布

    [JQUBAR1.1]jQuery 插件发布 JQUBAR1.1 简介 2010-11-22在博客园发布了柱状图JQUBar1.0 jQuery 插件.现将该插件升级为1.1版本. 1.1版本修复了部 ...

  9. Lazy Load, 延迟加载图片的 jQuery 插件 - NeoEase

    Lazy Load, 延迟加载图片的 jQuery 插件 - NeoEase Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器 ...

最新文章

  1. [经验总结]源代码管理=Ubuntu+Apache+SVN
  2. LeetCode Online Judge 题目C# 练习 - Minimum Path Sum
  3. SpringSecurity鉴权流程分析 附源码注释,xdm,一起来看看吧
  4. 软考-信息系统项目管理师-量化的项目管理
  5. DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法
  6. 20220208--CTF刷题记录--6道简单的MISC题目
  7. 免费体验,阿里云智能LOGO帮你解决设计难题
  8. 公司鼓励程序员不要加班,去约会!
  9. Oracle/云MySQL/MsSQL“大迁移”真相及最优方案
  10. 《『若水新闻』客户端开发教程》——16.添加广告
  11. php 遍历某一目录并对该目录中的所有文件重命名
  12. 使用Python进行差分进化全局优化
  13. 天啦噜!原来Android属性动画也不过如此
  14. 亚马逊账号关联的后果是什么
  15. 两个DIV并列排在一个大的DIV中
  16. 固定资产管理系统的作用何在?
  17. 面向服务与微服务架构
  18. 【生科行业报告】生科行业国际巨头们的2020年过得怎么样?(一)
  19. PTA Sheldon的小本本
  20. bulk插入 es_Elasticsearch 使用bulk批量导入数据

热门文章

  1. 贪心思维 专题记录 2017-7-21
  2. ES6中关于set数据结构详解
  3. 转:Linux网络IO并行化技术概览
  4. 封装的三级联动及应用
  5. [BZOJ 2659] [Beijing wc2012] 算不出的算式
  6. LoadLibrary 失败 GetLastError 126
  7. Kafka集群安装Version2.10
  8. MacOS安装app提示已损坏修复指令
  9. [蓝桥杯][2019年第十届真题c/c++B组]后缀表达式(解释sum -= 2*a[i])
  10. mysql.sock 初始化_mysql8.0 部署、初始化和创建实例