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 相关文章推荐
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 Javascript
JS实现可关闭的对联广告效果代码
Sep 14 Javascript
动态设置form表单的action属性的值的简单方法
May 25 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
JS实现颜色的10进制转化成rgba格式的方法
Sep 04 Javascript
JS+canvas绘制的动态机械表动画效果
Sep 12 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
Jan 27 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
vue keep-alive 动态删除组件缓存的例子
Nov 04 Javascript
微信小程序批量上传图片到七牛(推荐)
Dec 19 Javascript
vue 使用原生组件上传图片的实例
Sep 08 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实现事件机制的方法
2015/07/10 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
无语,javascript居然支持中文(unicode)编程!
2007/04/12 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
深入学习python的yield和generator
2016/03/10 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python中格式化format()方法详解
2017/04/01 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
关于热爱祖国的演讲稿
2014/05/04 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
预备党员入党感想
2015/08/10 职场文书
Nginx配置根据url参数重定向
2022/04/11 Servers
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers