1

初めて実行した後にこのアニメーションを停止させようとしていますが、.stop(true) を追加すると機能しません..何かアイデアはありますか??

これが私のjQueryです。

function doDisplayError(){  
    $("#errors").animate (
            { 'top': '200px' }, {
                duration: '300',
                easing: 'easeOutQuad'
            }).delay(3000).animate (
            { 'top': '-200px' }, {
                duration: '200',
                easing: 'easeInBack'
            });
}
4

2 に答える 2

1

次のように変数を使用して、実行が発生したかどうかを判断できます。

var animationExecuted = false;

function doDisplayError() {
    if(animationExecuted){
        return false;
    };
    console.log("executed");
    animationExecuted = true;

    $("#errors").animate({
        'top': '200px'
    }, {
        duration: '300',
        easing: 'easeOutQuad'
    }).delay(3000).animate({
        'top': '-200px'
    }, {
        duration: '200',
        easing: 'easeInBack'
    });
}​

デモ- コードを 1 回だけ実行する

ただし、なぜそれが複数回実行されるのかを確認し、可能であれば、それを補うのではなく、その問題に対処することをお勧めします。

于 2012-09-06T20:09:43.763 に答える
1
error_run_once=0;
function doDisplayError(){  
    if (error_run_once=0){
        $("#errors").animate (
            { 'top': '200px' }, {
               duration: '300',
               easing: 'easeOutQuad'
            }).delay(3000).animate (
           { 'top': '-200px' }, {
               duration: '200',
               easing: 'easeInBack'
            });
        error_run_once = 1;
    } else{
       // what else you want to do if you don't show animation?
    }
}

それが機能するかどうかを確認してください.. ==編集==

そして、他のコメントのように、より良い方法は、二度とそれを呼び出さないことかもしれません. それが呼び出される方法を変更すると、より良い方法になる可能性があります。

于 2012-09-06T20:08:44.483 に答える