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 相关文章推荐
javascript demo 基本技巧
Dec 18 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
js特效,页面下雪的小例子
Jun 17 Javascript
DOM节点删除函数removeChild()用法实例
Jan 12 Javascript
Node.js中的流(Stream)介绍
Mar 30 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
Vue实例中生命周期created和mounted的区别详解
Aug 25 Javascript
JS库之Particles.js中文开发手册及参数详解
Sep 13 Javascript
javascript系统时间设置操作示例
Jun 17 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 Javascript
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
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新特性详解之命名空间、性状与生成器
2017/07/18 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
PHP设计模式之模板方法模式实例浅析
2018/12/20 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
深入探讨Vue.js组件和组件通信
2016/09/12 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
python实现移动木板小游戏
2020/10/09 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
汽车检测与维修个人求职信
2013/09/24 职场文书
教育学习自我评价
2014/02/03 职场文书
班长演讲稿范文
2014/04/24 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
红与黑读书笔记
2015/06/29 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server