zoukankan      html  css  js  c++  java
  • jQuery插件制作方法详解

     
     

    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
      });
  • 相关阅读:
    JavaScript操作符instanceof揭秘
    Linux打开txt文件乱码的解决方法
    Working copy locked run svn cleanup not work
    poj 2299 UltraQuickSort 归并排序求解逆序对
    poj 2312 Battle City 优先队列+bfs 或 记忆化广搜
    poj2352 stars 树状数组
    poj 2286 The Rotation Game 迭代加深
    hdu 1800 Flying to the Mars
    poj 3038 Children of the Candy Corn bfs dfs
    hdu 1983 Kaitou Kid The Phantom Thief (2) DFS + BFS
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/3867648.html
Copyright © 2011-2022 走看看