.end()函数在jQuery中做了什么?

我已经阅读了这个网页http://api.jquery.com/end/,但是我对于.end()实际上还是一无所知。 这是什么,你如何使用它?

我也在阅读一本jQuery书籍,但它轻轻釉过.end(),并没有给出它的用途的任何例子。 有人可以澄清?

$("body").find("span").css("border", "2px red solid"); 

VS

 $("body").find("span").end().css("border", "2px red solid"); 

在Firebug控制台中单独执行这些语句,并注意行为有多不同。 基本上, .end()告诉它在find所有跨度后返回到body,并将边界应用于body,而不是跨度。 如果我们在那里没有.end() ,那么jQuery代码基本上行为正常,并且将.css()到body中的span元素。

 BODY > SPAN > APPLY BORDER TO SPANS 

end()它成为

 BODY > SPAN > GO BACK TO BODY > APPLY BORDER TO BODY 

find()是一个破坏性的操作,这意味着它改变了jQuery对象数组中的元素。

 $('body') 

我们目前的元素是身体

 $('body').find('span') 

我们使用了一个破坏性的操作find() ,这个操作改变了我们的整个对象集合被填充到body中的跨度,body不再处于集合中

 $('body').find('span').end() 

因为find是一个“破坏性”的操作,它在我们做了.find()之前就恢复了,基本上不做或者ctrl-Z是改变我们的jquery集合的最后一件事情。

它基本上回到父母的集合。 例如:

 $('.tree') .find('.branch') .find('.leaf') .addClass('tacks-onto-leaf') .end() .addClass('tacks-onto-branch') .end() .addClass('tacks-onto-tree'); 

它将链式JQuery语句的“范围”返回到上一级。

jQuery对象中的标签最初[$('P')]:P,P

find('SPAN')]:跨度,跨度,跨度,跨度,跨度

find('SPAN')。end()]:P,P

 $('span') //all <span> tags in the doc .find('#foo') //all <span> with id foo .addClass('blinkyRed') //adds class blinkyRed <span id='foo'> .end() //reverts scope to all <span> tags .addClass('Bold') //adds class Bold to all <span> tags 

它允许当前的“范围”结束并被重新定义。 例如,可以说你有一些HTML如:

 <div id="people"> <ul> <li>A</li> <li>B</li> </ul> <ul> <li>C</li> <li>D</li> </ul> </div> 

你可以先select父母:

 $('#people') 

并像修改孩子ul元素一样

 #('#people').find('ul').css('border', '1px solid #f00') 

但是如果你想继续编辑父元素(#people)呢? 你可以启动一个新的finder $('#people'),或者只是把它链接到第一行,然后用.end()来通知jQuery你要“closures”find()并且将search范围缩回到前面找(隐含的$('#人'),像这样)

 #('#people').find('ul').css('border', '1px solid #f00').end().css('border', '1px dashed #00f') 

因此,该行将:抓住#people的所有孩子的UL,将其边框改为红色,然后将父#people元素的边框更改为虚线和蓝色。

下面的函数可以用来改变你的jQueryselect,通常是为了使你的select更具体,或包容/独占:

添加和自我,孩子,filter,查找,映射,下一个,下一个,所有父母,父母,prev,prevAll,兄弟姐妹,切片,克隆,appendTo,prependTo,insertBefore,insertAfter或replaceAll

.end()可以用来重置你的select回到你原来的一套元素,完成了一些操作扩展select。