jQuery的end()和pushStack()介绍
但是当我们自己编写jQuery代码时,我们很少关注或使用pushStack()。如果我们需要编写一个涉及DOM遍历的插件,它会特别有用。在jQuery内部,pushStack()方法通过更改jQuery对象的prevObject属性(该对象由jQuery封装,也是jQuery对象,因为它实际存储了一个引用,所以被称为“跟踪”)来“跟踪”链调用中前一个方法返回的DOM结果集。当我们再次链调用end()方法时,在内部,返回当前jQuery对象的prevObject。更多细节,直接看源代码就可以了。这里只做简单分析。举个直接的例子, html:复制代码如下: div ID='祖父母'我是祖父母. div ID='父母'我是父母. div ID='子女'我是子女。/div/div/Div javascript:复制代码如下: varels=$ ('# child ')。父项()。parent();console . dir(els);插图:
了解这一点后,让我们制作一个祖父母插件,而不是调用。父项()。parent()连续两次,并使用。直接祖父母()。如果‘不小心’不考虑end(),代码大概是这样的。副本的代码如下: $ .fn .祖父母=函数(。};使用上面的示例:复制代码如下: $ ('# child ')。祖父母()。end();//jQuery-[div#parent]显然,这不是我们大多数情况下想要的。事实上,我们希望通过在链中调用end()直接返回jquery[div#child]。现在是时候推送Stack了。我们只需增加一行就可以复制:代码。代码如下: $ .fn .祖父母=函数(){varels=this.parent()。parent();返回this . PushStack(els . get());};在pushStack中,els.get()返回的DOM数组被打包成一个新的jQuery对象,这个(jQuery[div#child])会被分配给之前新构建的jQuery的prevObject,最后返回新的jQuery对象。所以这一次,当我们再次使用end()时,复制:的代码如下: var祖父母=$ ('# child ')。祖父母()。/* jquery-[div #祖父母] */。end ()/* jquery-[div # child] */。这篇博文的主旨来自《学习JQuery》中的一篇博客。感谢作者的分享。如果你感兴趣,点击jQuery pushStack。
版权声明:jQuery的end()和pushStack()介绍是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。