1

重複の可能性:
jQuery pushStack 関数はどのように機能しますか?

jQuery API で function を見ましたpushStack。説明は次のように述べています。Add a collection of DOM elements onto the jQuery stack.

jQuery スタックとは何か、何に使用できるか知っている人はいますか? DOMとの関係はありますか?

4

4 に答える 4

3

複数の jQuery メソッドを連結し、各メソッドが新しい jQuery オブジェクトを返す場合、jQuery はスタック内のすべての jQuery オブジェクトを追跡します。これにより、ローカル変数に保存することなく、以前に使用した jQuery オブジェクトに戻ることができます。これを機能させるために、jQuery メソッドは、メソッド呼び出しの結果として新しい jQuery オブジェクトを作成するときにpushStack()、新しいオブジェクトがスタックに参加できるようにするために呼び出します。

jQuery メソッドは、1 つの項目をスタックに戻して前の jQuery オブジェクトを取得し、複数回呼び出してスタックに戻り続けることができるという点で、.end()やや逆です。.pushStack()詳細については、.end()ドキュメントを参照してください。

の使用例として.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");
};
于 2012-08-10T06:57:46.393 に答える
0

core.jsの jQuery ソース行 203 を見ると、スタックは jQuery オブジェクト インスタンス内の現在の要素セットを参照しています。連鎖のようなものだと考えてください..フィルタリングすると、スタックに追加されます。end() を呼び出すと、そのセットがポップされ、スタック内の前のセットに戻ります。.pushStack()このスタックに要素の新しいセットを追加できます。

// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {

    // 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;

    if ( name === "find" ) {
        ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
    } else if ( name ) {
        ret.selector = this.selector + "." + name + "(" + selector + ")";
    }

    // Return the newly-formed element set
    return ret;
},
于 2012-08-10T07:00:51.417 に答える
0

.end() で使用できます

参照: jQuery pushStack

また: http://www.bennadel.com/blog/1739-Using-PushStack-In-jQuery-Plugins-To-Create-New-Collections.htm

于 2012-08-10T07:02:42.513 に答える
0

jQuery の DOM トラバーサル メソッドのほとんどは、jQuery オブジェクト インスタンスで動作し、DOM 要素の異なるセットに一致する新しいインスタンスを生成します。これが発生すると、あたかもオブジェクト内に保持されているスタックに要素の新しいセットがプッシュされたかのようになります。連続するフィルター処理方法ごとに、新しい要素セットがスタックにプッシュされます。次のように、このスタックを直接操作するさまざまな機能があります。

于 2012-08-10T06:59:53.660 に答える