如有错误,欢迎批评指正!
jQuery 中的 end 方法,我从 stackoverflow 上的一个回答开始讲:
原文链接: What does the .end() function do in jQuery?
--------------------------------------------------
$("body").find("span").css("border", "2px red solid");
vs
$("body").find("span").end().css("border", "2px red solid");
首先,观察上面两个东西。
第一句,选择器选择body元素,再遍历其后代,找到所有span元素。最后,给这些span元素设置border。
第二句,选择器选择body元素,再遍历其后代,找到所有span元素。回退到body元素。最后,给body元素设置border。
--------------------------------------------------
stackoverflow上高赞老哥的要点如下:
- find 方法是一种破坏性的操作(改变了 jQuery objects array 中保存的 element,原来是 body,现在变成了 span)
- end 方法类似于我们在写 word 时的 ctrl-Z 操作,可以将 jQuery object array 中的 element 回退至破坏性操作之前
- 额外一点:jQuery 的遍历方法都是破坏性操作
总结起来,就是 body 》 span 》back to body 》set border
--------------------------------------------------
jQuery object array(jQuery 对象数组 / 对象栈):
- 这个玩意儿,在一些网站中,是这么描述的:jQuery 在其内部维护一个叫做 jQuery 对象栈 的东西。这个栈中保存 jQuery 对象,而这些对象都有 3 个属性:context(上下文)、selector(选择器)、prevObject(前一个 jQuery 对象的 reference)。
- jQuery 为我们操作这个玩意儿,提供了两个方法:(1)end 方法 (2)andSelf 方法
--------------------------------------------------
参考网址: