jQuery插件制作方法详解

 

jquery插件给我的感觉清一色的清洁,简单。如Jtip,要使用它的功能,只需要在你的元素的class上加 上Jtip,并引入jtip.js及其样式即可以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已经有了很多很好,很精彩的插件。写一 个自己的jQuery插件是非常容易的,如果你按照下面的原则来做,可以让其他人也容易地结合使用你的插件.

jquery插件给我的感觉清一色的清洁,简单。如Jtip,要使用它的功能,只需要在你的元素的class上加上Jtip,并引入jtip.js及其样式即可以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已经有了很多很好,很精彩的插件。写一个自己的jQuery插件是非常容易的,如果你按照下面的原则来做,可以让其他人也容易地结合使用你的插件.

  • 为你的插件取一个名字,在这个例子里面我们叫它"foobar".

    创建一个像这样的文件:jquery.[yourpluginname].js,比如我们创建一个jquery.foobar.js

    创建一个或更多的插件方法,使用继承jQuery对象的方式,如:

  • jQuery.fn.foobar = function() {
    // do something
    };
  • 可选的:创建一个用于帮助说明的函数,如:

    jQuery.fooBar = {
    height: 5,
    calculateBar = function() { ... },
    checkDependencies = function() { ... }
    };

    你现在可以在你的插件中使用这些帮助函数了:

    jQuery.fn.foobar = function() {
    // do something
    jQuery.foobar.checkDependencies(value);
    // do something else
    };
  • 可选的l:创建一个默认的初始参数配置,这些配置也可以由用户自行设定,如:

    jQuery.fn.foobar = function(options) {
    var settings = {
    value: 5,
    name: "pete",
    bar: 655
    };
    if(options) {
    jQuery.extend(settings, options);
    }
    };

    现在可以无需做任何配置地使用插件了,默认的参数在此时生效:

    $("...").foobar();

    或者加入这些参数定义:

    $("...").foobar({
    value: 123,
    bar: 9
    });

    如果你release你的插件, 你还应该提供一些例子和文档,大部分的插件都具备这些良好的参考文档.现在你应该有了写一个插件的基础,让我们试着用这些知识写一个自己的插件.很多人试着控制所有的radio或者checkbox是否被选中,比如:

    $("input[@type='checkbox']").each(function() {
    this.checked = true;
    // or, to uncheck
    this.checked = false;
    // or, to toggle
    this.checked = !this.checked;
    });

    无论何时候,当你的代码出现each时,你应该重写上面的代码来构造一个插件,很直接地:

    $.fn.check = function() {
    return this.each(function() {
    this.checked = true;
    });
    };

    这个插件现在可以这样用:

    $("input[@type='checkbox']").check();

    现在你应该还可以写出uncheck()和toggleCheck()了.但是先停一下,让我们的插件接收一些参数.

    $.fn.check = function(mode) {
    var mode = mode || 'on'; // if mode is undefined, use 'on' as default
    return this.each(function() {
    switch(mode) {
    case 'on':
    this.checked = true;
    break;
    case 'off':
    this.checked = false;
    break;
    case 'toggle':
    this.checked = !this.checked;
    break;
    }
    });
    };

    这里我们设置了默认的参数,所以将"on"参数省略也是可以的,当然也可以加上"on","off", 或 "toggle",如:

    $("input[@type='checkbox']").check();
    $("input[@type='checkbox']").check('on');
    $("input[@type='checkbox']").check('off');
    $("input[@type='checkbox']").check('toggle');

    如果有多于一个的 参数设置会稍稍有点复杂,在使用时如果只想设置第二个参数,则要在第一个参数位置写入null.从上一章的tablesorter插件用法我们可以看到, 既可以省略所有参数来使用或者通过一个 key/value 对来重新设置每个参数.作为一个练习,你可以试着将 第四章 的功能重写为一个插件.这个插 件的骨架应该是像这样的:

    $.fn.rateMe = function(options) {
    var container = this; // instead of selecting a static container with $("#rating"), we now use the jQuery context var settings = {
    url: "rate.php"
    // put more defaults here
    // remember to put a comma (",") after each pair, but not after the last one!
    }; if(options) { // check if options are present before extending the settings
    $.extend(settings, options);
    } // ...
    // rest of the code
    // ... return this; // if possible, return "this" to not break the chain
    });

jQuery插件制作方法详解的更多相关文章

  1. jQuery中 $.ajax()方法详解

    $.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...

  2. jQuery - Ajax ajax方法详解

    $.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Strin ...

  3. jquery之 animate()方法详解

    jQuery.animate() 函数详解 animate()函数用于执行一个基于css属性的自定义动画. 你可以为匹配的元素设置css样式,animate()函数将会执行一个从当前样式到指定的css ...

  4. jQuery插件编写步骤详解

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

  5. jQuery插件autoComplete使用详解

    安装/需要引入的文件 <script type="text/javascript" src="../js/jquery-1.8.3.min.js.js"& ...

  6. Jquery validate插件使用方法详解

    html: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Reg.aspx.c ...

  7. BootStrapt iCheck表单美化插件使用方法详解(含参数、事件等) 全选 反选

    特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 — 包括 桌面和移动设备 2.支持触摸设备 — iOS.Android.BlackBerry.Windows Phone等系统 4.方便 ...

  8. iCheck表单美化插件使用方法详解(含参数、事件等)

    iCheck   特色: 1.在不同浏览器(包括ie6+)和设备上都有相同的表现 - 包括 桌面和移动设备 2.支持触摸设备 - iOS.Android.BlackBerry.Windows Phon ...

  9. jQuery插件- Autocomplete应用详解

    项目中有时会用到自动补全查询,就像Google搜索框.淘宝商品搜索功能,输入汉字或字母,则以该汉字或字母开头的相关条目会显示出来供用户选择, autocomplete插件就是完成这样的功能. auto ...

随机推荐

  1. spring boot 启动报错(spring-boot-devtools热部署后):The elements [spring.resources.cache-period] were left unbound. Update your application's configuration

    详细错误代码: *************************** APPLICATION FAILED TO START *************************** Descript ...

  2. [NOI2018]你的名字(68pts)

    SAM真让人头秃. 题面 https://www.luogu.org/problemnew/show/P4770 首先考虑 l=1,r=∣S∣的做法 如果对于ION2018的子串不用判重的话,对ION ...

  3. Mac百度云盘不限速操作步骤

    第一步:下载所需工具:(①②步我放在同一个文件夹,可一起下载,链接失效请留言) 工具地址:链接: https://pan.baidu.com/s/1raicYzM 密码: ve3n ①下载Aria2G ...

  4. django的url的name参数的意义

    Templates的链接地址都是根据urlpatterns定义的地址,拼凑成地址字符串,很难看,而且Templates里拼凑成的地址,随着页面的增加而不断增加,一旦在urlpatterns里的某个地址 ...

  5. vijos1746 floyd

    小D的旅行 旅行是一件颇有趣的事情,但是在旅行前规划好路线也很重要. 现在小D计划要去U国旅行. U国有N个城市,M条道路,每条道路都连接着两个城市,并且经过这条道路需要一定的费用wi. 现在小D想要 ...

  6. Leetcode 82

    有个错误就是member access within null pointer of type 'struct ListNode' 其实就是判断了指针是否异常了,比如NULL->next之类.要 ...

  7. spring cloud shutdown graceful 优雅停机

    spring cloud shutdown graceful 优雅停机 当一个服务启动后,会注册到eureka中,其他的服务也可以从eureka获取到新注册的服务.但当我们要停止一个服务的时候,如果直 ...

  8. consumer发送请求,接收响应

    一般情况,consumer发送请求时,创建一个DefaultFuture对象,然后阻塞并等待响应.DefaultFuture类,封装了请求和响应: // 省略其他代码 public class Def ...

  9. VAE demo

    先看tflearn 官方的: from __future__ import division, print_function, absolute_import import numpy as np i ...

  10. Get gcc built-in macros using command gcc -dM -E - < /dev/null

    root@vmuser-virtual-machine:/home/vmuser# gcc -dM -E - < /dev/null #define __SSP_STRONG__ 3#defin ...