如何编写自己的jquery插件
Jquery的插件主要分为三类:
、封装对象方法的插件:大部分插件都是封装对象的插件
、封装全局函数的插件:将独立的函数添加到jquery的命名空间之下。Jquery.ajax()和jquery.trim()就是jquery内部作为全局函数的插件添加到内核上去的。
、选择器插件:扩充自己喜欢的一些选择器。 编写Jquery插件的基本要点:
、一般命名的时候最好是按照jquery.[插件名].js命名。
、所有的对象都应当附加到jquery.fn对象上,所有的全局函数应该附加到jquery对象本身上
、通过this.each()来便利对象,这里的this指向的是当前选择器通过选择器获取的jquery对象
、所有的方法或者函数插件都要以分号结尾,否则压缩的话就会出现问题,有时候甚至要在头部也要加上“;”,以免不规范的代码给写的插件带来影响。
插件应当返回一个jquery对象,以便可以进行链式操作,除非你是要返回某个特定类型的参数,比如字符串和数组。
要注意$和jquery两个符号的冲入,可以利用闭包这种技术来回避这个问题。 允许使用内部函数,而且,这些内部函数可以访问他们所在的外部函数中声明的局部变量参数和声明的其他的内部函数,当其中一个这样的内部函数在包含他们的外部函数之外被调用时,就会形成闭包。
“闭包”是一个很复杂的概念,对于编写jquery插件其实是有一个模板的,这个模板中就有用到闭包的概念。 常见的jquery插件的都是有如下的格式的:
;(function($){
$.fn.yourName = function(options){ //各种属性、参数
  }
var options = $.extend(defaults, options);//定义参数
this.each(function(){
//插件实现代码
});
};
})(jQuery);
注解:
()、“;(function($){ })(jQuery);”使用了匿名函数,表示在方法体内的”$”表示的就是”jquery”,为了有更好的兼容性,所以在前面添加一个分号
,这里的$符号是作为匿名函数的形参
()、$.extend(defaults, options);表示的是如果options中的参数总是有值的话,那么options中的值将会代替defaults中的值。举个例子来说:
Var setting={validate:true,limit:,name:foo};
Var options={validate:fasle,name:tom};
Var newoptions=$.extend(setting,options);
那结果就是newoptions={validate:false,limit:,name:tom}.
所以Jquery.extend()(或者是$.extend())经常来设置插件的一些默认的参数。
还有就是$.extend()用来扩展方法,和jquery.fn.extend()一样都是可以的,他们的区别在于:前者不使用jquery的方法,而后者使用了jquery的方法,就像 addClass(),remove()等。所以可想而知大部分的现有插件都是jquery.fn.extend()进行扩展的。 function foo(options){
  options=jquery.extend({
  Name:“bar”,
  Length:,
  dataType:”xml”
  },options);
};
如果options参数传入的值为空,那么就可以使用默认设置的值。 例子:
;(function($)){
  $.fn.extend({
   “functionname”:function(options){//某个方法名
  Options=$.extend({
  odd:”odd”,
  even:”even”
  },options);
  //可以通过options.元素名称来获取元素之,如options.odd
  //some codes
  $(“.table”).addClass(“”);//为某个元素添加样式等等
  }
  //一个方法结束
  //另一个方法 this.cleartb = function() {//同时你也可以这么写,这里cleartb就是方法的名称 $('#emed_tb01').remove();//方法要做的事情 }
  });
} 那我们在使用的时候就可以:
$(“#id_”).cleartb();//选中id为“id_”的元素执行上面插件中的cleartb的方法。 下面给出一个完整的插件的例子供参考:这个插件是一个消息提示的插件, ;(function($){
$.fn.manhuaTip = function(options) {//扩展函数manhuaTip
var defaults = {//默认值
Event : "click",
timeOut :
};
var options = $.extend(defaults,options);//以传参覆盖
var $tip = $(this);//选定操作的jquery元素为当前选中的元素
$tip.live(options.Event,function(e){
var type = $(this).attr('ty');
var msg = $(this).attr('msg');
var tipHtml = '';
if (type =='loading'){
tipHtml = '<img alt="" src="../images/loading.gif">'+(msg ? msg : '正在提交您的请求,请稍后...');
} else if (type =='notice'){
tipHtml = '<span class="gtl_ico_hits"></span>'+msg
} else if (type =='error'){
tipHtml = '<span class="gtl_ico_fail"></span>'+msg
} else if (type =='succ'){
tipHtml = '<span class="gtl_ico_succ"></span>'+msg
}
if ($('.msgbox_layer_wrap')) { $('.msgbox_layer_wrap').remove();
}
if (st){
clearTimeout(st);
}
$("body").prepend("<div class='msgbox_layer_wrap'><span id='mode_tips_v2' style='z-index: 10000;' class='msgbox_layer'><span class='gtl_ico_clear'></span>"+tipHtml+"<span class='gtl_end'></span></span></div>");
$(".msgbox_layer_wrap").show();
var st = setTimeout(function (){
$(".msgbox_layer_wrap").hide();
clearTimeout(st);
},options.timeOut);
});
} })(jQuery)

编写自己的jquery插件的更多相关文章

  1. (翻译)编写属于你的jQuery插件

    Writing Your Own jQuery Plugins 原文地址:http://blog.teamtreehouse.com/writing-your-own-jquery-plugins j ...

  2. 教你开发jQuery插件(转)

    教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文: ...

  3. jQuery插件手把手教会(二)

    上次我们将到了简单的jQuery插件,这次我们继续: 面向对象的插件开发 为什么要有面向对象的思维,因为如果不这样,你可能需要一个方法的时候就去定义一个function,当需要另外一个方法的时候,再去 ...

  4. 【转】教你开发jQuery插件

    阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原文:http://www.cnblo ...

  5. 开发JQuery插件(转)

    教你开发jQuery插件(转)   阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原 ...

  6. jquery插件与扩展一

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  7. 教你开发jQuery插件

    jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程&g ...

  8. jQuery插件编写及链式编程模型小结

    JQuery极大的提高了我们编写JavaScript的效率,让我们可以愉快的编写代码,做出各种特效.大多数情况下,我们都是使用别人开发的JQuery插件,今天我们就来看看如何把我们常用的功能做出JQu ...

  9. 【jQuery基础学习】08 编写自定义jQuery插件

    目的:虽然jQuery各种各样的功能已经很完善了,但是我们还是要学会自己去编写插件.这样我们可以去封装一些项目中经常用到的专属的代码,以便后期维护和提高开发效率. jQuery插件的类型: 封装对象方 ...

随机推荐

  1. M2Mqtt is a MQTT client available for all .Net platform

    Introduction M2Mqtt is a MQTT client available for all .Net platform (.Net Framework, .Net Compact F ...

  2. ystem.Windows.Forms.SplitContainer : ContainerControl, ISupportInitialize

    #region 程序集 System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ...

  3. 让你看不懂的swift语法

    一.Swift杂谈 Swift语法出来时间不长,网络上的各种教程已经铺天盖地,可是基本上全部的教程都是来自官方翻译. 从Swift出来到如今.每天都在学习Swift.以下给出个人感受 Swift中的非 ...

  4. Android menu+ anctionbar

    一.概述 Menu,简单来理解就是当你按下手机的"menu"键时所弹出来的窗体,它被广泛应用着,差点儿在每一个应用中都有它的身影. 二.要求 用两种方式实现菜单功能. 三.实现 新 ...

  5. 12款程序员们最爱的Bootstrap模板

    如果你还没有开始使用Bootstrap模板,那你可真是有够OUT,这是一个帮助你快速开发的工具,Bootstrap是基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完 ...

  6. Python中的乱码

        我把写好的Python脚本导入到ArcGIS中的ToolBox中,在本机测试是没有问题的.为了把工具分享给其他人,即在其他电脑上使用,我必须将脚本文件(*.py)导入到工具箱文件(*.tbx) ...

  7. JAVA中MD5加密实现

    MD5加密实现  结 package com.pb; import java.io.UnsupportedEncodingException; import java.security.Message ...

  8. JSONP简单例子

    jsonp的原理很简单,主要利用了HTML中所有有src的属性的标签可以跨域的特点,利用script的src进行get请求,后端输出一段js代码的字符串在script中便会执行. 当然后端输出普通的j ...

  9. eclipse git提交代码

    1.安装git 2.安装好后,进行,一个简单配置,填入我们的用户名和邮箱 >>Preferences>Team>Git>Configuration 设置自定义仓库 3.登 ...

  10. R语言中数据结构

    R语言还是有点古老感觉,数据结构没有Python中那么好用.以下简单总结一下R语言中经常使用的几个数据结构. 向量: R中的向量能够理解为一维的数组,每一个元素的mode必须同样,能够用c(x:y)进 ...