1

私はこのボックスを私と同じように上下させたいのですが、人々がそれを何百万回もクリックして、それが起こるよりもはるかに速くクリックできるので、それが上下するのを見ることができないようにしたいと思います。だから私の質問は...クリックに200ミリ秒の遅延を設定する方法、またはそれらの200ミリ秒の間クリックできないようにするにはどうすればよいですか?

これがjsfiddleです:http://jsfiddle.net/QwwUD/4/

 <html>   

<style>
div { 
position:absolute; 
background-color:#abc; 
left:50px;
width:90px; 
height:90px;
top:100px;
margin:5px; 
}
</style>

<div class="block" id='up' disabled='true'></div>

<script>

$('.block').click(function(){


    if($('.block').attr('id') == 'up'){
        $('.block').animate({'top': '-=50px'}, 200);
        $('.block').attr('id', 'down');
    }else{
        $('.block').animate({'top': '+=50px'}, 200);
        $('.block').attr('id', 'up');
    }
    }
    ); 

</script>
</body>
</html>
4

2 に答える 2

4

.stopアニメーションを試してみてください:

http://jsfiddle.net/QwwUD/1/

$('.block').click(function() {

    var btn = $('.block');
    btn.prop('disabled', true);
    window.setTimeout(function() {
        btn.prop('disabled', false);
    }, 600);

    if ($('.block').attr('id') == 'up') {
        $('.block').stop(true,true).animate({
            'top': '-=50px'
        }, 200);
        $('.block').attr('id', 'down');
    } else {
        $('.block').stop(true,true).animate({
            'top': '+=50px'
        }, 200);
        $('.block').attr('id', 'up');
    }
});​
于 2012-07-16T19:39:16.440 に答える
2

クリックイベントが現在アニメーション化されている場合は、以下を使用して停止できます。

$('.block').click(function(){
    if ( $(this).is(":animated") ) return false;
    ... rest of your code ...
});

しかし、私はEsailijaによって提案されたようにアニメーションを停止することを好みます。

于 2012-07-16T19:45:25.820 に答える