jQuery插件制作之全局函数用法实例


Posted in Javascript onJune 01, 2015

本文实例讲述了jQuery插件制作之全局函数用法。分享给大家供大家参考。具体分析如下:

1、添加新的全局函数

所谓的全局函数,实际上就是jQuery对象的方法,但从实践的角度上看,他们是位于jQuery命名空间内部的函数

(1)添加一个函数,只需要将新函数指定为jQuery对象的一个属性。

jQuery.five =function(){ 
 alert("直接继承方式不一样"); 
}

调用:

$.five();

(2)添加多个函数

jQuery.five =function(){ 
 alert("直接继承方式不一样"); 
} 
jQuery.six =function(){ 
 alert("直接继承方式不一样2"); 
}

调用:

$.five();$.six();

以上的方法会面临命名空间冲突的风险,为避免这个问题,最好把属于这个插件的所有全局函数,都封装到一个对象中,如下:

//命名空间继承
jQuery.myPlugin ={ 
 one : function(obj){ 
  var object = obj; 
  var id = object.attr("id"); 
  alert(id); 
 }, 
 two : function(){ 
  alert(22); 
 } 
}

这样其实是为全局函数创建了另一个命名空间:jQuery.myPlugin.

2、添加jQuery对象方法

jQuery中大多数内置的功能都是通过其对象的方法提供的。

jQuery.fn.myMethod= function(){ 
 alert(11); 
}

调用:

$.fn.myMethod();

注意:jQuery.fn是jQuery.prototype的别名。

实例:以下是行为不正确的方法

<ul> 
  <li>11111111111111111111111111</li> 
  <liclass="this">22222222222222222222</li> 
  <li>333333333333333</li> 
  <liclass="that">44444444444444444</li> 
  <liclass="this">55555555555555</li> 
  <li>6666666666666666</li> 
  <li>777777777777777777</li> 
  <liclass="that">777777777777777777</li> 
</ul> 
<inputtype="button" value="swap" id="swap" />
jQuery.fn.swapClass= function(class1,class2){ 
 if(this.hasClass(class1)){ 
  this.removeClass(class1).addClass(class2); 
 } 
 if(this.hasClass(class2)){ 
  this.removeClass(class2).addClass(class1); 
 } 
} 
 $("#swap").click(function(){ 
  $("li").swapClass("this","that"); 
  return false; 
})

全部li都是用了that样式。

(1)隐士迭代

要在无论匹配多个元素的情况下都保证行为的正确,最简单的方法是始终在方法的环境上调用.each()方法,这样就会

执行隐士迭代,而执行隐士迭代对于维护插件和内置方法的一致性是至关重要的,在调用的.each()方法内部,this

依次引用的是每个DOM元素.以上代码修改为:

jQuery.fn.swapClass= function(class1,class2){ 
 this.each(function(){ 
  var $element = jQuery(this); 
  if($element.hasClass(class1)){ 
   $element.removeClass(class1).addClass(class2); 
  }else if($element.hasClass(class2)){ 
   $element.removeClass(class2).addClass(class1); 
  } 
 }) 
}

调用:

$("li").swapClass("this","that")

(2)方法的连缀

要使用方法的连缀,必须在所有的插件方法中返回一个jQuery对象。返回的jQuery对象通常就是this所引用的对象。

jQuery.fn.swapClass= function(class1,class2){ 
 return this.each(function(){ 
  var $element = jQuery(this); 
  if($element.hasClass(class1)){ 
   $element.removeClass(class1).addClass(class2); 
  }else if($element.hasClass(class2)){ 
   $element.removeClass(class2).addClass(class1); 
  } 
 }) 
}

调用:

$("li").swapClass("this","that").css("text-decoration","underline");

3、添加新的简写方法

//添加新的简写方法 
jQuery.fn.slideFadeOut= function(speed,callback){ 
 return this.animate({ 
  height : "hide", 
  opacity : "hide" 
 },speed,callback) 
} 
jQuery.fn.slideFadeIn= function(speed,callback){ 
 return this.animate({ 
  height : "show", 
  opacity : "show" 
 },speed,callback) 
} 
jQuery.fn.slideFadeToggle= function(speed,callback){ 
 return this.animate({ 
  height : "toggle", 
  opacity : "toggle" 
 },speed,callback) 
}

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
LBS blog sql注射漏洞[All version]-官方已有补丁
Aug 26 Javascript
js 对象是否存在判断
Jul 15 Javascript
使用jquery为table动态添加行的实现代码
Mar 30 Javascript
jQuery插件expander实现图片翻转特效
May 21 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
基于Bootstrap3表格插件和分页插件实例详解
May 17 Javascript
jQuery实现的购物车物品数量加减功能代码
Nov 16 Javascript
JS获得一个对象的所有属性和方法实例
Feb 21 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
H5实现仿flash效果的实现代码
Sep 29 Javascript
js中对象与对象创建方法的各种方法
Feb 27 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 #Javascript
jQuery解析XML文件同时动态增加js文件的方法
Jun 01 #Javascript
JS实现兼容各浏览器解析XML文档数据的方法
Jun 01 #Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 #Javascript
js事件监听器用法实例详解
Jun 01 #Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 #Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 #Javascript
You might like
PHP三元运算符的结合性介绍
2012/01/10 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
详解json在php中的应用
2018/09/30 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
JQuery实现倒计时按钮具体方法
2013/11/14 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
jquery实现图片上传前本地预览功能
2016/05/10 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
python-str,list,set间的转换实例
2018/06/27 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
python定义类self用法实例解析
2020/01/22 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
用C语言实现文件读写操作
2013/10/27 面试题
优秀党支部事迹材料
2014/01/14 职场文书
最新个人职业生涯规划书
2014/01/22 职场文书
优秀应届毕业生推荐信
2014/02/18 职场文书
平安校园建设方案
2014/05/02 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
2016年第十四个公民道德宣传日活动总
2016/04/01 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书