您的位置 >>> 星想互联 >>> 网站建设 >>> 域名空间
jQuery回溯处置的方案
点击数:8277  发布时间2014-11-10 23:01:52

jQuery回溯处置的方案

在这一末节我将会统率你们熟习jQuery对DOM发展遍历暗地里的工作机制,这样可以或许在编写代码时居心识地防备一些无庸要的一再利用,从而提职代码的效率。

关于jQuery对象的包装

var $aaron = $("aaron");

经过对sizzle的阐发,我们大要得知Query抉择器终极都是经由过程DOM接话柄现取值的, 可是经由jQuery处置后前往的不单仅只需DOM对象,而是一个包装容器,前去jQuery对象:$aaron

在jQuery对象中有个prevObject对象,这个是干吗用的呢?

假如你想晓得prevObject是干什么的,我们起首得先来大白一下jQuery对象栈,jQuery内部护卫着一个jQuery对象栈。每一个遍历门径都邑找到一组新元素(一个jQuery对象),日后jQuery会把这组元素推入到栈中。

而每一个jQuery对象都有三个属性:context、selector和prevObject,此中的prevObject属性就指向这个对象栈中的前一个对象,而经由过程这个属性可能回溯到一开始的DOM元素集中。

为了利便理解,我们做几个容易的测试:

下面有一个父元素ul,嵌套了一个li节点:

				
    parent
  • child

我们现给li绑定一个变乱,这个很容易,找到ul下面的li,绑定便可:

var aaron = $("#aaron");
    aaron.find('li').click(function(){
        alert(1);     //1
    })

此时我又想给父元素绑定一个事务,我们是不是又要在aaron上绑定一次事件呢?是的,下面代码经由过程find措置后,此时的凹凸文是指向每一个li了,所以必需要从新援用aaron元素(li的父元素),日后再绑定click事情:

aaron.click(function(){
      alert(2);     //1
 })

这样会不会很费事,以是jQuery引入一个容易的内部寻址的机制,概略回溯到畴前的Dom元素纠合,通过end()办法可能完成:

aaron.find('li').click(function() {
        alert(1);
}).end().click(function() {
        alert(2);
})

jQuery为我们操作这个外部对象栈供应了两个尤为有用的法子:

☑   .end()

☑   .andBack()

调用第一个方式只是容易地弹出一个对象(终究便是回到前一个jQuery对象)。第二个方式更成心思,调用它可在栈中回溯一个位子,往后把两个位子上的元素集组合起来,并把这个新的、组合以后的元素集推入栈的上方。

利用这个DOM元素栈能够削减反复的查问和遍历的操纵,而减少反复独霸也正是优化jQuery代码坚守的关键所在。

来源:星想互联
【上一篇】jQuery理念
【下一篇】css布局里的margin: auto;