pushStack()顾明思意,就是像桟中添加东西呗,现在看看他是如何添加东西的.
创建一个空的jQuery对象,然后把Dom元素集合放入这个jQuery对象中,
并保留对当前jQuery对象的引用.
pushStack是核心方法之一,它为以下方法提供支持:
jQuery对象遍历:.eq(),first(),.last(),.slice(),.map();
Dom查找,过滤:.find(),.not(),.filter(),.closest(),.add(),.andSelf().
Dom遍历:.parent(),.parents(),parentUntil(),.next(),.prev(),.nextAll(),.prevAll(),
.nextUntil(),.prevUntil(),siblings(),.children(),.contents().
Dom插入:$.before(),$.after(),$.replaceWith(),.append(),.prepent(),.brfore(),.after(),.replaceWith().

241行:定义方法pushStack(elems,name,selector).
elems:准备放入新的jQuery对象的元素数组(或类似数组的集合).
name:产生元素数组elems的jQuery方法名,如eq,find,after,filter...
selector:传给jQuery方法的参数,用于修正原型属性.selector.

243行:thisconstructor是执行jQuery构造函数.加上括号.表示执行资格构造函数.
那么ret就是一个jQuery对象.但是这个jQuery对象里面是没有Dom元素引用的,
只有jQuery本身所具有的成员.
245~250行:是把参数elems合并到新的jQuery对象中.
如果elems是数组,借用push插入;否则调用方法jQuery.merge()合并.
253行:给新的jQuery对象添加属性prevObject(),并指向当前jQuery对象,
形成了一个链式桟.因此,pushStack()还可以理解为,构建一个新的jQuery对象并入栈,
新对象位于栈顶.
255行:给这个新的jQuery指定上下文.this.context要么是指定的上级dom节点,要么是默认的rootjQuery,在前面章节中说过了,不在提了.
257~261行主要是给ret指定选择器的.也就是在传入的参数selector的基础上再改造,
改造完成后作为新对象ret的selector.
264行:返回新的jQuery对象.

311行:prevObject是在调用pushStack中添加的引用,也就是说没有经过入栈的操作,这个引用时为空的;
这个时候会通过constructor这个属性构建一个空的jQuery对象并返回.
.end()方法和.pushStack()方法的原理截然相反.

.pushStack()是用于入栈,而end()确用于出桟.

 $(".guo").find(".yan").css("color","red")  //使用find()入栈(find调用了pushStack())
.end() //将find(".yan")出桟
.find(".si"); //继续寻找$(".guo")..find(".si")

最新文章

  1. (Spring4 json入门)Spring4+SpringMVC+页面数据发送与接收(json格式)
  2. ACM/ICPC 之 电力网络-EK算法(POJ1459)
  3. oracle指令
  4. Java连接Oracle10g
  5. 如何写一个网页标题title的闪动提示
  6. json-smart 使用示例
  7. 解决curl中errno为51和60的错误
  8. Python学习笔记整理总结【RabbitMQ队列】
  9. [Gradle] 在 Eclipse 下利用 gradle 构建系统
  10. 本地缓存,Redis缓存,数据库DB查询(结合代码分析)
  11. axios拦截http拦截
  12. Hello Flask
  13. Git(工作区和暂存区概念)
  14. spring boot 项目启动无任何反应
  15. [UWP]实现一个轻量级的应用内消息通知控件
  16. jquery之行自加自减
  17. ios-根据单元格里的控件tag值,在方法外获得对应的section与row的值
  18. Django 2.0.1 官方文档翻译: 高级教程:如何编写可重用的app (page 13)
  19. 开源 免费 java CMS - FreeCMS1.5-数据对象-guestbook
  20. python爬搜狗微信获取指定微信公众号的文章

热门文章

  1. Android SDK manager 闪退
  2. 雷林鹏分享:Ruby File 类和方法
  3. JS获取当前时间到30天之后的日期区间
  4. mmap实现大文件快速拷贝
  5. T4 模板代码生成
  6. 创芯Xilinx Microblaze 学习系列第一集
  7. maven编译报错 -source 1.5 中不支持 lambda 表达式(转)
  8. 集成学习之Boosting —— Gradient Boosting原理
  9. PostgreSQL psql中如何查看快捷功能的对应函数
  10. error: 'ENOSYS' undeclared (first use in this function)