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 相关文章推荐
jQuery带箭头提示框tooltips插件集锦
Nov 17 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
Node.js+Express配置入门教程
May 19 Javascript
BootStrap中Datepicker控件带中文的js文件
Aug 10 Javascript
纯js和css完成贪吃蛇小游戏demo
Sep 01 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
vue如何从接口请求数据
Jun 22 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
本地搭建微信小程序服务器的实现方法
Oct 27 Javascript
vue.js实现只弹一次弹框
Jan 29 Javascript
vue首次赋值不触发watch的解决方法
Sep 11 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 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中上传大体积文件时需要的设置
2006/10/09 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
一个基于PDO的数据库操作类
2011/03/24 PHP
PHP中HTML标签过滤技巧
2014/01/07 PHP
十大使用PHP框架的理由
2015/09/26 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
php截取视频指定帧为图片
2016/05/16 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
Js面试算法详解
2018/04/08 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
JS实现图片拖拽交换效果
2018/11/30 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
python实现控制台打印的方法
2019/01/12 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
常用的HTML5列表标签
2017/06/20 HTML / CSS
财务出纳员岗位职责
2013/11/26 职场文书
高中生自我评语大全
2014/01/19 职场文书
个人优缺点自我评价
2014/01/27 职场文书
安全生产责任书范本
2014/04/15 职场文书
小学生评语集锦
2014/04/18 职场文书
公司捐款倡议书
2014/05/14 职场文书
优秀纪检干部材料
2014/08/27 职场文书
如何解决php-fpm启动不了问题
2021/11/17 PHP