jquery之管理包装元素集合(管理jquery链,end()方法与andSelf()方法的使用)
----------
对于在单个语句里把jquery包装器方法链起来完成大量的任务的能力。这种链能力不但允许以简洁的方式写出强大的操作,而且提高了效率,因为它能够把多个命令应用到包装集,而不必重新计算包装集。利用命令链里调用的方式,可能生成多个包装集。例如,调用clone()方法生成新包装集,即创建原始包装集元素的副本,一旦生成新包装集,就无法引用原始包装集,因此,我们就被剥夺了构造多功能jquery命令链的能力。
思考以下语句:
这个语句内产生两个包装集:一个是页面上所有<img>元素的原始包装集,另一个是由原始包装集元素的副本所组成的新包装集。clone()方法返回新包装集作为结果,而appendTo()命令正是在这个新包装集上进行操作的。
那么,在克隆原始包装集后,如果我们想接着应用一个命令,比如添加CSS类名到原始包装集,该怎么办?不可以添加到现在命令链的末端,因为那样做的话,将会影响克隆得到的新包装集元素,而不是原始包装集的图像元素。为了满足这个需求,jquery提供了end()命令。在jquery链内,一调用这个方法,方法就会作为返回值回退到前一个包装集。
考虑以下语句:
appendTo()方法应用到克隆得到的新包装集,只要调用end()就回退到前一个包装集,并在其上执行addClass()命令。如果不插入end()命令,addClass()就操作克隆得到的新包装集。
-----
end()语法:
end()
在jquery命令链内调用,以便回退到前一个包装集。
返回
前一个包装集
-----
jquery命令链在执行期间所产生的包装集保存在栈内。当调用end()时,最顶端的(最近产生的)包装集出栈,公开前一个包装集,让后续命令进行操作。
=====
另一个修改包装集栈的方法是:andSelf(),这个方法把栈内最顶端的两个包装集合并为一个包装集。
-----
andSelf()语法:
andSelf()
合并命令链内最近产生的两个包装集
返回
合并后的包装集
-----