2

私は無名関数を呼び出しています:

        closeSidebar(function() {
            alert("function called");
            $(this).addClass("current");
            setTimeout(function(){openSidebar()}, 300);
        });

しかし$(this)、期待どおりに機能しないため、引数として関数に渡す必要があります。少し調査した後、これでうまくいくと思いました:

            closeSidebar(function(el) {
               $(el).addClass("current");
               setTimeout(function(){openSidebar()}, 300);
            })(this);

しかし、そうではありません。無名関数に引数を追加するにはどうすればよいですか?

jsFiddle - 右側のボタンをクリックすると、アニメーションが表示され、上記の関数が呼び出されます。ボタンのクラスが「現在」の場合、ボタンの左側に白いバーが表示されますが、クラスは変更されません。

4

3 に答える 3

4

これを行うこともできます:

        closeSidebar(function(el) {
            $(el).addClass("current");
            setTimeout(function(){openSidebar()}, 300);
        }(this));

引数は、呼び出し元ではなく、無名関数自体に渡す必要があります。

于 2013-05-19T06:51:08.140 に答える
1

引数を追加するには、次のメソッドを使用します。

var fn=function() { };
fn.apply(this,arguments);
于 2013-05-19T06:50:41.247 に答える