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 相关文章推荐
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
Oct 17 Javascript
js正确获取元素样式详解
Aug 07 Javascript
javascript中的float运算精度实例分析
Aug 21 Javascript
判断浏览器的javascript版本的代码
Sep 03 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
Sep 01 Javascript
jquery.multiselect多选下拉框实现代码
Nov 11 Javascript
js 计算图片内点个数的示例代码
Apr 04 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
原生js+ajax分页组件
Jan 30 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
javascript实现京东登录显示隐藏密码
Aug 02 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
页面乱码问题的根源及其分析
2013/08/09 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
封装了一个js图片轮换效果的函数
2011/09/28 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
node.js实现快速截图
2016/08/27 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
python基础教程之获取本机ip数据包示例
2014/02/10 Python
python字符串中的单双引
2017/02/16 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
python 求10个数的平均数实例
2019/12/16 Python
python与idea的集成的实现
2020/11/20 Python
德国药房apodiscounter中文官网:德国排名前三的网上药店
2019/06/03 全球购物
请描述一下”is a”关系和”has a”关系
2015/02/03 面试题
2015年元旦活动总结
2014/05/09 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
建筑工地标语
2014/06/18 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
MySQL慢查询优化解决问题
2022/03/17 MySQL
win10电脑右下角输入法图标不见了?Win10右下角不显示输入法的解决方法
2022/07/23 数码科技