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 相关文章推荐
JavaScript入门学习书籍推荐
Jun 12 Javascript
JQuery异步加载无限下拉框级联功能实现示例
Feb 19 Javascript
理解JavaScript中worker事件api
Dec 25 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
Mar 13 Javascript
深入理解Vue nextTick 机制
Apr 28 Javascript
webuploader分片上传的实现代码(前后端分离)
Sep 10 Javascript
详解搭建es6+devServer简单开发环境
Sep 25 Javascript
详解滑动穿透(锁body)终极探索
Apr 16 Javascript
egg.js的基本使用和调用数据库的方法示例
May 18 Javascript
jQuery Ajax async=>false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
jQuery实现手风琴效果(蒙版)
Jan 11 jQuery
vue项目实现多语言切换的思路
Sep 17 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
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php制作中间带自己定义图片二维码的方法
2014/01/27 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
Laravel实现ORM带条件搜索分页
2019/10/24 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
设置jQueryUI DatePicker默认语言为中文
2016/06/04 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
解决vue attr取不到属性值的问题
2018/09/18 Javascript
小程序实现新用户判断并跳转激活的方法
2019/05/20 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python的另外几种语言实现
2015/01/29 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
python中setuptools的作用是什么
2020/06/19 Python
Python如何输出百分比
2020/07/31 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
南京某公司笔试题
2013/01/27 面试题
小区门卫工作职责
2013/12/14 职场文书
致共产党员倡议书
2014/04/16 职场文书
文明班级建设方案
2014/05/15 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技