WEB开发网
开发学院网页设计JavaScript jQuery.API源码深入剖析以及应用实现 - 核心函数... 阅读

jQuery.API源码深入剖析以及应用实现 - 核心函数篇

 2010-09-14 13:38:00 来源:WEB开发网   
核心提示: 先看下表达式不包含“,”符号的时候,调用pushStack方法,jQuery.API源码深入剖析以及应用实现 - 核心函数篇(6),方法为://将一系列元素推入栈中pushStack:function(elems,name,selector){varret=jQue

先看下表达式不包含“,”符号的时候,调用pushStack方法,方法为:

//将一系列元素推入栈中
pushStack:function(elems,name,selector){
  varret=jQuery(elems);
  //将上个对象的引用推入栈中
  ret.prevObject=this;
  ret.context=this.context;
  //关键字为find时,在原有selector的基础上,继续增加selector
  //如$("div").find("p")意思就是$("divp")
  if(name==="find")
    ret.selector=this.selector+(this.selector?"":"")+selector;
  elseif(name)
    ret.selector=this.selector+"."+name+"("+selector+")";
  //返回最新的Jquery对象
  returnret;
}

注意这里看到 ret.prevObject= this; 这个方法在$(...).andSelf()和$(...).end()中调用,对于筛选或查找后的元素,返回前一次元素状态它是很有用的。

接着调用 jQuery.find( selector, this[0], ret ); ,首先我们看到有这样的几句代码:

jQuery.find=Sizzle;
jQuery.filter=Sizzle.filter;
jQuery.expr=Sizzle.selectors;
jQuery.expr[":"]=jQuery.expr.filters;
//……
window.Sizzle=Sizzle;

jQuery.find方法转去调用全局的Sizzle对象了(实际上这里运用到了Javascript设计模式中的适配器模式,jquery.find实际上调用的是Sizzle的对象。关于Javascript适配器模式,我将接下来的Javascript乱弹设计模式系列文章中具体叙述),Sizzle对象定义为:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:jQuery API 源码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接