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 07 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
May 24 Javascript
JS判断日期格式是否合法的简单实例
Jul 11 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
AngularJS学习第一篇 AngularJS基础知识
Feb 13 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 Javascript
详解动画插件wow.js的使用方法
Sep 13 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
Apr 13 Javascript
浅谈vue项目如何打包扔向服务器
May 08 Javascript
vue和小程序项目中使用iconfont的方法
May 19 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 07 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的日期与时间函数技巧
2008/04/24 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
JavaScript国旗变换效果代码
2008/08/13 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
javascript实现拖放效果
2015/12/16 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
租房安全协议书
2014/08/20 职场文书
学生偷窃检讨书
2014/09/25 职场文书
城南旧事读书笔记
2015/06/29 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
运动会致辞稿
2015/07/29 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
详解Redis瘦身指南
2021/05/26 Redis