我希望动画一些东西,然后点击它。但是,当我执行以下操作时,它会立即单击该项目。这是为什么?我该如何解决这个问题?
$('input[type="submit"]').hide('slow').show('slow').click();
答案 0 :(得分:4)
使用回调功能。
$('input[type="submit"]').hide( "slow", function() {
// Do whatever you want in the callback function, this will fire after the hide function finished.
$(this).click();
});
答案 1 :(得分:3)
如果您希望同步代码作为动画队列的一部分异步发生,最好的方法是使用.queue()
方法:
$('input[type="submit"]')
.hide('slow')
.show('slow')
.queue(function (next) {
$(this).click();
next();
});
只有在当前正在执行的代码完成之前不排队更多动画时,Promise才会起作用。
完整的回调是可以的,只要你之后不需要再执行更多的动画。否则,完整的回调最终看起来像箭头代码:
$(...).hide('slow', function () {
$(this).show('slow', function () {
$(this).click();
});
});