5

jQueryオブジェクトのスタックを別のjQueryオブジェクトにコピーして、endまったく関係のないオブジェクトを返す場合でもプラグインで使用できるようにするにはどうすればよいですか?例:

$(myselector)
    .next()             // Destructive operation
        .doSomething()
    .end()              // Goes back to "myselector"
    .doSomethingElse(); // Works fine!

$.fn.myPlugin = function() {
    return $(unrelated); // No stack, can't call "end" on it
};

$(myselector)
    .myPlugin()         // Destructive operation
        .doSomething()
    .end()              // Goes back to nowhere, since the stack is empty
    .doSomethingElse(); // Doesn't work

のスタック$(unrelated)を含むようにオブジェクトを変更したいので、2番目の例が機能します。これがjsFiddlethisの完全な例です。

4

3 に答える 3

2
$.fn.myPlugin = function(related) {
    if ( related == "getRelated" )
        return this.pushStack($(this.data("related")).get()); // Want to preserve stack
    return this.data("related",related);
};

end()が戻るように、要素をスタックにプッシュする必要があります。

于 2012-02-06T01:02:04.127 に答える
0

私には、プラグインの作成方法がjQueryのロジックを妨害しているように見えます。これは、jQueryが予期しないものを返しているためです。私はjQueryをまったく知らないので、それは単なる推測です。

代わりに.doSomething()でやりたいことができるかもしれません。

于 2012-02-06T01:05:55.500 に答える
0

$('#a')のデータを見ると、実際のjQueryオブジェクトではなく'#c'という文字列にすぎません。コードを更新しましたhttp://jsfiddle.net/89gkD/3/

于 2012-02-06T01:07:13.273 に答える