1

这最好通过代码示例来解释,所以任何人都可以解释为什么(在技术方面)传递给测试的匿名函数在 jQuery 隐藏事件之后没有被调用?

更新:对于这个例子来说,这是指什么并不重要,但为了清楚起见,让我们说测试功能在全局范围内,这是一个锚元素。

test(this, function() {
    alert('Called by anonymous function!');
});

function test(object, callback) {
    $(object).hide('slow', callback);
}

改变:

$(object).hide('slow', callback);

到:

$(object).hide('slow', callback());

作品。这是因为回调不是当前上下文或全局窗口对象中的命名函数吗?

4

2 回答 2

1

您的代码应该看起来更像这样

test(this, function() {...});

您没有在代码中调用匿名函数,但我不确定该语法实际上是做什么的

查看这个工作示例的小提琴http://jsfiddle.net/L4NxD/2

编辑,对小提琴进行了更多编辑,以更好地复制原始代码。使用http://jsfiddle.net/L4NxD/1http://jsfiddle.net/L4NxD/来获取早期版本。

于 2012-04-27T03:05:56.423 回答
0

这是正确的做法。

http://jsfiddle.net/6dFm6/6/

在隐藏动画之后调用 remove 将删除对象并导致动画回调不被调用。

它在 jsfiddle.net/6dFm6/1 中起作用的原因是因为回调在运行时执行,并且在回调事件期间传递和调用值。

有关“functionName()”作为回调返回的内容的不同程度的清晰度,请参阅这些文章。调用似乎返回了“未定义”,但是执行仍然在正确的时间发生。

什么时候在回调函数名后使用 ()?

在 JavaScript 中,如果我用括号调用函数会有所不同吗?

回调函数 - 括号的使用

将命名函数用作jquery ajax成功回调时是否需要括号

javascript语法:函数调用和使用括号

于 2012-10-11T10:43:36.843 回答