jquery - 什么是 jquery 堆栈?

标签 jquery dom

Possible Duplicate:
How does the jQuery pushStack function work?

在 jQuery API 中我看到了一个函数 pushStack 。描述说:Add a collection of DOM elements onto the jQuery stack.

有谁知道 jQuery 堆栈是什么以及它可以用来做什么?和DOM有关系吗?

最佳答案

当您将多个 jQuery 方法链接在一起并且每个方法返回一个新的 jQuery 对象时,jQuery 会跟踪堆栈中的所有 jQuery 对象。这允许您返回之前使用的 jQuery 对象,而不必将其保存在本地变量中。为了实现这一点,当 jQuery 方法通过方法调用创建一个新的 jQuery 对象时,它会调用 pushStack() 以允许新对象参与堆栈。

jQuery 方法 .end().pushStack() 有点相反,因为它返回堆栈中的一项以获取先前的 jQuery 对象并可以多次调用它以继续返回堆栈。请参阅the .end() doc了解更多信息。

举个使用 .pushStack() 的例子,假设您想要一个方法来获取容器中的所有文本节点,您可以这样做,并使用以下方法返回新生成的 jQuery 对象.pushStack():

jQuery.fn.textNodes = function() {
    var nodes = [];
    this.each(function() {
        var node = this.firstChild;
        while (node) {
            if (node.nodeType == 3) {
                nodes.push(node);
            }
            node = node.nextSibling;
        }
    });
    return this.pushStack(nodes, "textNodes");
};

关于jquery - 什么是 jquery 堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11896764/

相关文章:

javascript - 如何禁用 div 中的 HTML 标签?

javascript - 如何使 POST Action 与 jquery/ajax Colorbox 一起工作? (里面的 fiddle )

jquery - 用户单击后更改 JQuery Raty ReadOnly 值

jquery - 如何应用使用 jQuery 动态加载的内联和/或外部 CSS

javascript - 不断淡入淡出

javascript - li 元素的子节点给出 [#text, <ul> … </ul> , #text]

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - jQuery show() 不是函数 - 用于添加 DOM 元素

javascript - 在 phantomjs 中访问 iframe 的 contentDocument

html - Vue2 如何使用 $refs 定位元素并删除 css 类