我希望这个盒子像我一样上下移动,但是我不希望人们能够点击它一百万次然后看着它上下移动,因为你可以点击它比它发生的更快。所以我的问题是...... 如何在点击上放置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>
答案 0 :(得分:4)
在动画上试试.stop
:
$('.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');
}
});
答案 1 :(得分:2)
如果点击事件当前正在使用以下设置动画,则可以停止:
$('.block').click(function(){
if ( $(this).is(":animated") ) return false;
... rest of your code ...
});
但我更喜欢按照Esailija的建议停止动画。