我正在寻找动画效果,然后单击它。但是,当我执行以下操作时,它会立即单击该项目。这是为什么?我该如何补救?

$('input[type="submit"]').hide('slow').show('slow').click();

最佳答案

如果您希望同步代码作为动画队列的一部分异步发生,最好的方法是使用 .queue() 方法:

$('input[type="submit"]')
    .hide('slow')
    .show('slow')
    .queue(function (next) {
        $(this).click();
        next();
    });

只有在当前执行的代码完成之前您没有将更多动画排入队列,Promise 才会起作用。

完整的回调是可以的,只要你之后不需要执行更多的动画。否则,完整的回调最终看起来像箭头代码:
$(...).hide('slow', function () {
    $(this).show('slow', function () {
        $(this).click();
    });
});

.queue() 有助于 flatten arrow code

关于javascript - 为什么点击事件会在这里立即注册?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28773322/

10-11 13:37