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 相关文章推荐
javascript 动态加载 css 方法总结
Jul 11 Javascript
jquery实现瀑布流效果分享
Mar 26 Javascript
javascript实例--教你实现扑克牌洗牌功能
May 15 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
Mar 11 Javascript
Node.js事件驱动
Jun 18 Javascript
JavaScript中this的9种应用场景及三种复合应用场景
Sep 12 Javascript
深入理解MVC中的时间js格式化
May 19 Javascript
在vue里面设置全局变量或数据的方法
Mar 09 Javascript
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
以v-model与promise两种方式实现vue弹窗组件
May 21 Javascript
学习LayUI时自研的表单参数校验框架案例分析
Jul 29 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 面向对象 final类与final方法
2010/05/05 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
2014/04/08 Javascript
jquery+ajax请求且带返回值的代码
2015/08/12 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
python中引用与复制用法实例分析
2015/06/04 Python
python+selenium+autoit实现文件上传功能
2017/08/23 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
python之pyqt5通过按钮改变Label的背景颜色方法
2019/06/13 Python
使用python的pandas为你的股票绘制趋势图
2019/06/26 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
Python的历史与优缺点整理
2020/05/26 Python
python自定义函数def的应用详解
2020/06/03 Python
python中return不返回值的问题解析
2020/07/22 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
采购部长岗位职责
2014/06/13 职场文书
质量负责人岗位职责
2015/02/15 职场文书
努力工作保证书
2015/02/28 职场文书
高温慰问简报
2015/07/21 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python