gpt4 book ai didi

javascript - 动态创建的动画结束回调

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:19:50 28 4
gpt4 key购买 nike

我有以下代码,我在其中添加来自队列内两个循环的效果:

tablaActual = ({
1111: {
titulo: "Nuevo Video 1",
usuario: "RadioBot",
alta: "1353182478"
},
2243: {
titulo: "Old Boy Fashion",
usuario: "RadioBot",
alta: "1353182479"
},
3432: {
titulo: "Britney spears",
usuario: "RadioBot",
alta: "1353182825"
}
});

tablaNueva = ({
1111: {
titulo: "Nuevo Video 1",
usuario: "RadioBot",
alta: "1353182478"
},
1112: {
titulo: "Nuevo video 2",
usuario: "RadioBot",
alta: "1353182477"
},
1113: {
titulo: "Nuevo video 3",
usuario: "RadioBot",
alta: "1353182476"
}
});


$("button").bind("click", function() {

var body = $('body');

retardation = 500;
i = 1;

// we delete the old ones that doesnt match in the new table
$.each(tablaActual, function(index) {
if (!tablaNueva[index]) {
delay = i * retardation;

$('#lista #id' + index).delay(delay).slideUp("normal", function() {
$(this).remove();
}).queue("cola1");

delete tablaActual[index];
i++;
}
});

// we add the new ones that doesnt match in the old table
$.each(tablaNueva, function(index, vars) {
if (!tablaActual[index]) {

delay = i * retardation;
$('<tr id="id' + index + '"><td class="cancion"><h3>' + vars.titulo + '</h3></td><td class="autor">' + vars.usuario + '<span>' + vars.alta + '</span></td></tr>').appendTo('#lista').hide().delay(delay).show('slow').queue("cola2");


tablaActual[index] = vars;
i++;


}
});

$("tr:animated").promise().done(function() {

alert("done");
});


});

jsFiddle

当所有 TR 动画完成后,它应该会触发警报,但我认为我做错了,因为只要我单击运行按钮就会弹出警报。

我该怎么做?

最佳答案

我会使用 jQuery.Deferred() 让它工作。通过这样做,您可以排队等待相应项目动画完成后解析的多个延迟对象。

简而言之,创建一个延迟对象数组并使用有点奇怪的构造等待它们 jQuery.when.apply(...).done(function() { ... }) .

看看this JSFiddle .

关于javascript - 动态创建的动画结束回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441089/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com