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

5

您可以参考下面的代码在匿名函数中传递参数。

var i, img;
for(i = 0; i < 5; i++)
{
  img = new Image();
  img.onload = function(someIndex)
  {
    someFunction(someIndex);
  }(i);
  img.src = imagePaths[i];
}

希望你能有所了解。

于 2013-05-19T06:57:20.403 回答
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 回答