如何执行一次该功能?

时间:2013-04-08 14:52:36

标签: javascript jquery fadein

$("#div1, #div2").fadeIn('500',function(){
    {
        console.log('Test');
    }
});

在这里小提琴:http://jsfiddle.net/y97h9/

以上代码将在控制台中打印“Test”两次。我怎样才能让它只打印一次。有可能吗?

3 个答案:

答案 0 :(得分:27)

当然,您可以使用jQuery promise来解决多个回调问题:

$("#div1, #div2").fadeIn('500').promise().done(function()
{
    console.log('Test');
});
  

.promise()方法返回一个动态生成的Promise   一旦绑定到集合的某个类型的所有操作解决,   排队与否,已结束

<强> Working Demo

答案 1 :(得分:3)

对于每个匹配的元素,回调将运行一次。您始终可以设置一个标志,以查看它是否已经运行:

var hasRun = false;
$("#div1, #div2").fadeIn('500', function() {
    if (hasRun) return;
    console.log('Test');
    hasRun = true;
});

答案 2 :(得分:-1)

使用布尔标志来阻止console.log('Test');被叫两次。

var isCalled = false;
$("#div1, #div2").fadeIn('500',function(){
    if(!isCalled) {
        isCalled = true;
        console.log('Test');
    }
});