为什么点击事件会立即注册?

时间:2015-02-27 20:01:45

标签: javascript jquery

我希望动画一些东西,然后点击它。但是,当我执行以下操作时,它会立即单击该项目。这是为什么?我该如何解决这个问题?

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

2 个答案:

答案 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();
    });
});

.queue()有助于flatten arrow code