jQuery - 使用作为函数参数传入的匿名函数作为jQuery回调函数

时间:2012-04-26 06:32:42

标签: javascript jquery function callback anonymous

最好通过代码示例来解释,所以有人可以解释为什么(在技术术语中)传递给test的匿名函数在jQuery hide事件之后不会被调用吗?

更新:对于这个例子来说,这并不重要,但是为了清楚起见,我们可以说测试函数在全局范围内,这是一个锚元素。

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

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

更改:

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

要:

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

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

2 个答案:

答案 0 :(得分:1)

您的代码看起来应该更像

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

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

查看一个工作示例http://jsfiddle.net/L4NxD/2

的小提琴

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

答案 1 :(得分:0)

这是正确的方法。

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

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

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

请参阅这些文章,了解'functionName()'作为回调返回的内容的不同程度。调用返回“undefined”,但执行仍然在正确的时间执行。

When to use () after a callback function name?

In JavaScript, does it make a difference if I call a function with parentheses?

Callback function - use of parentheses

do I need parenthesis when using a named function as an jquery ajax success callback

javascript syntax: function calls and using parenthesis