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 相关文章推荐
非常好的js代码
Jun 27 Javascript
Javascript学习笔记7 原型链的原理
Jan 11 Javascript
(function($){...})(jQuery)的意思
Jul 22 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
Oct 17 Javascript
统计出现最多的字符次数的js代码
Dec 03 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
Dec 22 Javascript
ArtEditor富文本编辑器增加表单提交功能
Apr 18 Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 Javascript
非常实用的vue导航钩子
Mar 20 Javascript
vue-cli webpack 引入swiper的操作方法
Sep 15 Javascript
React实现全选功能
Aug 25 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中使用Oracle数据库(1)
2006/10/09 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
超简单的jquery的AJAX用法
2010/05/10 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
python输出带颜色字体实例方法
2019/09/01 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
如何理解Python中包的引入
2020/05/29 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
python 基于wx实现音乐播放
2020/11/24 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
澳大利亚顶级美发和美容贸易超市:glamaCo
2020/01/19 全球购物
信息服务专业毕业生求职信
2014/03/02 职场文书
毕业寄语大全
2014/04/09 职场文书
学校联谊协议书
2014/09/16 职场文书
群众路线查摆问题整改措施
2014/10/10 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers