jQuery.extend()、jQuery.fn.extend()扩展方法示例详解


Posted in Javascript onMay 08, 2014

jQuery自定义了jQuery.extend()和jQuery.fn.extend()方法.其中jQuery.extend()方法能够创建全局函数或者选择器,而jQuery.fn.extend()方法能够创建jQuery对象方法.

例如:

jQuery.extend({ 
showName : function(name){ 
alert(name) 
} 
}); 
jQuery.showName("深蓝");

jQuery.extend()除了可以创建插件外,还可以用来扩展jQuery对象.
例如:
var a = { 
name : "blue", 
pass : 123 
} 
var b = { 
name : "red", 
pass : 456, 
age : 1 
} 
var c = jQuery.extend({},a,b);

c拥有a,b对象的属性,由于,b对象在a对象之后,其name属性优先在c对象里.

jQuery.extend()方法为插件传递系列选项,包括默认值.

function fn(options){ 
var options = jQuery.extend({ //默认参数选项列表 
name1 : value1, 
name2 : value2, 
name3 : value3 
},options); //使用函数的参数覆盖或合并到默认参数选项列表中 
//函数体 
} 
fn({ name1 : value3, name2 : value2 , name3 : value1 });//使用新值 
fn({ name4 : value3, name5 : value2 });//在默认上添加新选项 
fn(); //保持默认选项值

当在调用该方法时,传递新的参数值,就会覆盖掉默认的参数选项值,否则,使用默认参数值.

使用JQuery.fn对象创建JQuery对象方法

可以通过jQuery.fn对象来添加属性和方法,实际上jQuery.fn对象就是挂接在jQuery.prototype上的,jQuery把它简写了.

fn 是什么东西呢。查看jQuery代码,就不难发现。

jQuery.fn = jQuery.prototype = { 
 init: function( selector, context ) {//....  

 //...... 
};

原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。

例如:

jQuery.fn.test = function(){ 
alert("这是jQuery对象方法!"); 
} 
jQuery("div").click(function(){ 
$(this).test(); //在当前的jQuery对象上调用test()方法 
});

我们可以调用jQuery.fn.extend()方法来创建jQuery对象方法.
jQuery.fn.extend({ 
test : function(){ 
return this.each(function(){ 
alert(this.nodeName) 
}); 
} 
}); 
jQuery("body *").click(function(){ 
$(this).test(); //调用jQuery对象方法 
});

一句话:jQuery.extend是对JQuery类的自定义扩展,jQuery.fn.extend是对JQuery对象的自定义扩展.
Javascript 相关文章推荐
JS控制表格隔行变色
Jun 26 Javascript
在javascript中如何得到中英文混合字符串的长度
Jan 17 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
javascript实现Table排序的方法
May 15 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
Aug 26 Javascript
Javascript中replace()小结
Sep 30 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
原生javascript实现的ajax异步封装功能示例
Nov 03 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
Apr 17 Javascript
ionic2懒加载配置详解
Sep 01 Javascript
Vue.js 表单控件操作小结
Mar 29 Javascript
React和Vue中监听变量变化的方法
Nov 14 Javascript
jquery通过visible来判断标签是否显示或隐藏
May 08 #Javascript
setInterval计时器不准的问题解决方法
May 08 #Javascript
Js Jquery创建一个弹出层可加载一个页面
May 08 #Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
May 08 #Javascript
js 设置缓存及获取设置的缓存
May 08 #Javascript
javascript实现的一个带下拉框功能的文本框
May 08 #Javascript
javascript解析json数据的3种方式
May 08 #Javascript
You might like
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python实现文件名批量替换和内容替换
2014/03/20 Python
python使用marshal模块序列化实例
2014/09/25 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
python编程羊车门问题代码示例
2017/10/25 Python
Python中一行和多行import模块问题
2018/04/01 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
200行python代码实现贪吃蛇游戏
2020/04/24 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
基于Redis结合SpringBoot的秒杀案例详解
2021/10/05 Redis
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS