jQuery对象的链式操作用法分析


Posted in Javascript onMay 10, 2016

本文实例讲述了jQuery对象的链式操作用法。分享给大家供大家参考,具体如下:

jQuery对象的链式操作

首先来看一个例子:

$("#myphoto").css("border","solid 2px#FF0000").attr("alt"," good");

对一个jQuery对象先调用了css()函数修改样式,然后使用attr()函数修改属性,这种调用方式象链一样,所以称为"链式操作"。

链式操作能够让代码变得简洁,因为往往可以在一条语句中实现以往多条语句才能完成的任务。比如如果不使用链式操作,需要用两条语句才能完成上面的任务:

$("#myphoto").css("border","solid 2px#FF0000");
$("#myphoto").arrt("alt","good");

除了增加了代码量,还调用了两次选择器,降低了速度。

在一个较短的链式操作中,往往语句比较清晰,可以分步骤地对jQuery对象实现各种操作。但是链式操作不应该太长,否则会造成语句难以理解,因为要查看jQuery对象当前的状态并不是容易的事,尤其如果涉及jQuery对象中元素的增删操作是更加难以判断。

并不是所有的jQuery函数都可以使用链式操作。这与链式操作的原理有关,之所以可以实现链式操作是因为其中的每个函数返回的都是jQuery对象本身。在jQuery类库的内部实现中,虽然很多的函数都返回jQuery对象本身,但都是通过调用内部有限的几个函数实现的,比如attr()函数设置属性石,实际上最后调用了"jQuery.each(object,callback,args)"方法。注意此方法不是jQuery对象方法,jQuery对象方法也有一个each()函数,为"jQuery.fn.each(callback,args)",此函数最后同样调用jQuery.each函数:

Each:function(callback,args){
  ReturnjQuery.each(this,callback,args);
}

下面看一看jQuery.each函数的返回结果:

Each.function(object,callback,args){
  Retumobject;
}

Object是jQuery.fn对象,即jQuery对象。最后返回的还是jQuery对象。

可以使用下面的原则判断一个函数返回的时候是jQuery对象,即是否可以用于链式操作。

除了获取某些数据的函数,比如获取属性值"attr(name)",获取集合大小"size()"这些函数明显是返回数据的。除了这些函数之外的jQuery函数都可以用于链式操作,比如设置属性"attr(name.value)"。

"$"变量的使用

"$"变量是"jQuery"变量的引用。"jQuery"变量是全局变量,jQuery对象是指"jQUery.fn",不要混淆。"jQuery"变量类似于静态类,上面的方法都是静态方法,可以在任何时刻调用。比如"jQuery.each"。"jQuery.fn"是实例方法,只能在jQuery对象上调用。比如"jQuery.fn.each()"方法只能通过"$('#id').each"这种形式调用。

前面提到,可以使用"$"代替"jQuery",因为在jQuery的内部有如下实现:

jQuery=window.jQuery=window.$

所以"$"变量和"jQuery"变量实际上是Window对象的属性,也就是全局变量。可以在页面上得任何地方调用。

希望本文所述对大家jquery程序设计有所帮助。

Javascript 相关文章推荐
ToolTips JQEURY插件之简洁小提示框效果
Nov 19 Javascript
Firefox中使用outerHTML的2种解决方法
Jun 07 Javascript
通过jquery 获取URL参数并进行转码
Aug 18 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 Javascript
Backbone中View之间传值的学习心得
Aug 09 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
Jul 05 Javascript
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
angular2中使用第三方js库的实例
Feb 26 Javascript
react配置antd按需加载的使用
Feb 11 Javascript
vue props 单项数据流实例分享
Feb 16 Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 #Javascript
Bootstrap按钮下拉菜单组件详解
May 10 #Javascript
JavaScript编写页面半透明遮罩效果的简单示例
May 09 #Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 #Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
May 09 #Javascript
Bootstrap模仿起筷首页效果
May 09 #Javascript
基于jquery实现智能表单验证操作
May 09 #Javascript
You might like
一个oracle+PHP的查询的例子
2006/10/09 PHP
php 文件上传代码(限制jpg文件)
2010/01/05 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
js 图片转base64的方式(两种)
2018/04/24 Javascript
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
keep-alive保持组件状态的方法
2020/12/02 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
python中global用法实例分析
2015/04/30 Python
在Python中使用next()方法操作文件的教程
2015/05/24 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
python语言中有算法吗
2020/06/16 Python
新锐科技Java程序员面试题
2016/07/25 面试题
医院护士的求职信
2014/01/03 职场文书
庆元旦活动总结
2014/07/09 职场文书
万里长城导游词
2015/01/30 职场文书
综合实践活动报告
2015/02/05 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
Matlab如何实现矩阵复制扩充
2021/06/02 Python
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript