首先了解下栈:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。栈的规则是先进后出。下面看下jQuery中链式方法的使用:
$('ul').children('li').css("backgroundColor","#CCC");
首先选择页面中ul元素,再寻找其子元素中li,为其设置背景颜色为灰色。这里,ul首先入栈,子元素li后入栈,则css()最后操作的是li元素不是ul,这里是因为jQuery里所有链式操作都调用了jQuery中的工具方法——pushStack()。下面看下这个神奇函数的源码:
pushStack: function( elems ) {
// Build a new jQuery matched element set
var ret = jQuery.merge( this.constructor(), elems );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
ret.context = this.context;
// Return the newly-formed element set
return ret;
}
可以看到,首先新建一个ret对象