jQuery的动画在无限循环(jQuery animate in infinite loop)

2019-10-16 17:50发布

我试图做到这一点:

  1. 防止一个提交按钮提交表单

  2. 淡出的元件出

  3. 然后提交表单

但是我坚持用动画的无限循环! 为什么??

HTML

<form id="postitron" method="post" action="/postitron/answertron.php">
  <input type="hidden" name="acces" value"yes">
  <input id="submit" type="submit" value="DOIT">
</form>

JavaScript的

$('#postitron').submit(function(e){
    e.preventDefault();
    $('#page').animate({opacity:0},400, function(){
        $('#postitron').submit();
    });
});

PS-我也试过了.one()方法,而不是.submit()但它防止了提交方法从#postitron一次动画的完整:(执行

Answer 1:

这是因为你在你的绑定事件SUBMIT ,和你的.animate callback functionSUBMIT “荷兰国际集团的形式......导致无限循环。

尝试这个 :

相反,结合事件.submitform ,结合.click事件submit按钮。

$('#submit').click(function(e){
    e.preventDefault();
    $('#page').animate({opacity:0},400, function(){
        $('#postitron').submit();
    });
});

裸记住我没有测试这一点。



Answer 2:

submit()调用您的自定义约束submit功能,这又打电话给你submit再等等。

尝试使用DOM的提交:

$('#postitron')[0].submit()



Answer 3:

你可以预先定义的功能,并且在它内部解除绑定提交,然后重新提交。 这是一个黑客,但它可能工作。

或许你检查它的隐藏的烦躁,然后重新提交这样的:

var hidden = false;
$('#postitron').submit(function(e){
    if ( !hidden ) {
        e.preventDefault();
        $('#page').animate({opacity:0},400, function(){
            hidden = true;
            $('#postitron').submit();
        });
    }
});


文章来源: jQuery animate in infinite loop