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 相关文章推荐
拖动布局之保存布局页面cookies篇
Oct 29 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
Dec 24 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
Jan 31 Javascript
JavaScript函数作用域链分析
Feb 13 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
Jul 21 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
Dec 08 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
Dec 26 Javascript
微信小程序 常用工具类详解及实例
Feb 15 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
在vue组件中使用axios的方法
Mar 16 Javascript
JavaScript 预解析的4种实现方法解析
Sep 03 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
Sep 21 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/08/18 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
浅析php原型模式
2014/11/25 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
图片按比例缩放函数
2006/06/26 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
javascript操作cookie
2017/01/17 Javascript
基本DOM节点操作
2017/01/17 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
使用JavaScript破解web
2018/09/28 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
实用的Vue开发技巧
2019/05/30 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
vue3.0搭配.net core实现文件上传组件
2020/10/29 Javascript
python比较两个列表大小的方法
2015/07/11 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
用canvas显示验证码的实现
2020/04/10 HTML / CSS
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
教育科学研究生自荐信
2013/10/09 职场文书
摘录式读书笔记
2015/07/01 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书