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 相关文章推荐
硬盘浏览程序,保存成网页格式便可使用
Dec 03 Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 Javascript
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
jQuery实现单行文字间歇向上滚动源代码
Jun 02 Javascript
Js点击弹出下拉菜单效果实例
Aug 12 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
JavaScript判断文件上传类型的方法
Sep 02 Javascript
深入学习jQuery中的data()
Dec 22 Javascript
详解从新建vue项目到引入组件Element的方法
Aug 29 Javascript
实现一个完整的Node.js RESTful API的示例
Sep 29 Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 Javascript
openlayers实现图标拖动获取坐标
Sep 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连接access数据库方法
2013/11/11 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
python3中str(字符串)的使用教程
2017/03/23 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python删除不需要的python文件方法
2018/04/24 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
python DataFrame 取差集实例
2019/01/30 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
python数据分析:关键字提取方式
2020/02/24 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
详解python metaclass(元类)
2020/08/13 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
python实现邮件循环自动发件功能
2020/09/11 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
如何提高MySql的安全性
2014/06/19 面试题
师范生自荐信
2013/10/27 职场文书
面试求职的个人自我评价
2013/11/16 职场文书
自我评价中英文语句
2013/11/30 职场文书
你的创业计划书怎样才能打动风投
2014/02/06 职场文书
师范生自我鉴定
2014/03/20 职场文书
小学国庆节活动总结
2015/03/23 职场文书