$("#div1, #div2").fadeIn('500',function(){
{
console.log('Test');
}
});
在这里小提琴:http://jsfiddle.net/y97h9/
以上代码将在控制台中打印“Test”两次。我怎样才能让它只打印一次。有可能吗?
答案 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');
}
});