我已经阅读了这个网页http://api.jquery.com/end/,但我仍然对.end()实际上做的事情一无所知。它是什么以及如何使用它?
我也正在阅读一本jQuery书,但它轻轻地釉了一下.end()并没有提供任何关于它的用途的例子。有人可以澄清吗?
答案 0 :(得分:59)
$("body").find("span").css("border", "2px red solid");
VS
$("body").find("span").end().css("border", "2px red solid");
在这个确切的页面上,在Firebug控制台中单独执行这些语句,并注意这些行为有多么不同。基本上,.end()
告诉它在找到所有跨度后回到身体,并将边界应用于身体,而不是跨度。如果我们没有.end()
,那么jQuery代码基本上表现正常,并将.css()
应用于正文中的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').find('span').end()
因为find是一个“破坏性”操作,它会在我们执行.find()
之前恢复,基本上是un-do或ctrl-Z是改变我们的jquery集合的最后一件事。
答案 1 :(得分:51)
它基本上回到父集。例如:
$('.tree')
.find('.branch')
.find('.leaf')
.addClass('tacks-onto-leaf')
.end()
.addClass('tacks-onto-branch')
.end()
.addClass('tacks-onto-tree');
答案 2 :(得分:7)
它将链式JQuery语句的“范围”退回到上一级。
jQuery对象中的标签最初[$('P')]:P,P
找到[$('P')后找到jQuery对象中的标签。找到('SPAN')]:SPAN,SPAN,SPAN,SPAN,SPAN结束后jQuery对象中的标签[$('P')。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
答案 3 :(得分:4)
它允许当前的“范围”结束并重新定义。例如,假设您有一些HTML:
<div id="people">
<ul>
<li>A</li>
<li>B</li>
</ul>
<ul>
<li>C</li>
<li>D</li>
</ul>
</div>
您可以先通过以下方式选择父级:
$('#people')
修改子元素ul元素,如
#('#people').find('ul').css('border', '1px solid #f00')
但是如果你想继续编辑父元素(#people)会发生什么?你可以启动一个新的查找器$('#people')或者只是将它链接到第一行,然后是.end()来通知jQuery你要“关闭”find()并将搜索范围放回到在找到之前(暗示$('#people'),就像这样)
#('#people').find('ul').css('border', '1px solid #f00').end().css('border', '1px dashed #00f')
这样一行:抓住#people的所有子UL,将其边框更改为红色,然后将父#people元素的边框更改为虚线和蓝色。
答案 4 :(得分:0)
以下函数可用于更改jQuery选择,通常是为了使您的选择更具体,或包含/排除:
add,andSelf,children,filter,find,map,next,nextAll,not,parent,parents,prev,prevAll,siblings,slice,clone,appendTo,prependTo,insertBefore,insertAfter或replaceAll
在对扩展选择进行一些操作之后, .end()
可用于将您的选择重置回原始元素集。