我有一个 div ,当我按下 j 按钮时,它只会动画一次,我想在每次按下时为 div 设置动画键盘上的 j 按钮,无需刷新页面。
这可能是使用JQuery ???
抱歉我的英语不好。以下是我的代码。
animate.html
<!DOCTYPE html>
<html>
<head>
<style>
.div {
width: 100px;
height: 100px;
background-color: red;
position: relative;
-webkit-animation-name: example; /* Chrome, Safari, Opera */
-webkit-animation-duration: 1s; /* Chrome, Safari, Opera */
animation-name: example;
animation-duration: 1s;
}
/* Chrome, Safari, Opera */
@-webkit-keyframes example {
0% {background-color:red; left:0px; top:0px;}
50% {background-color:green; left:100px; top:100px;}
100% {background-color:red; left:0px; top:0px;}
}
/* Standard syntax */
@keyframes example {
0% {background-color:red; left:0px; top:0px;}
50% {background-color:yellow; left:100px; top:100px;}
100% {background-color:yellow; left:0px; top:0px;}
}
</style>
</head>
<body>
<p>
<b>Note:</b> This example does not work in Internet Explorer 9 and earlier versions.
</p>
<br>
<div id="box"></div>
<script src="js/jquery-1.10.1.min.js"></script>
<script src="js/jquery.hotkeys.js"></script>
<script>
$(document).bind('keydown', 'j', function(){
$('#box').addClass("div");
});
</script>
</body>
</html>
答案 0 :(得分:1)
Jquery已将'bind'替换为'on'。
试试这段代码:
$('body').on('keydown',function(e){
if(e.which==82 || e.which==106){
$('#box').addClass("div");
}
});
'J'的ASCII值为82,'j'为106。
答案 1 :(得分:1)
你必须每次都删除课程并再次向你添加课程div
,这里是小提琴 -
http://jsfiddle.net/hwu1z7dh/1/
答案 2 :(得分:0)
看起来我的问题是你没有在动画结束后删除class=div
。在This Fiddle中,我添加了一个在CSS动画结束时触发的事件:
//fires when 'j' key is pressed
$('body').on('keydown', function (e) {
if (e.which == 106 || e.which == 74) {
$('#box').addClass("div");
}
});
$('#box').on('webkitAnimationEnd oanimationend msAnimationEnd animationend',
function (e) {
$('#box').removeClass("div");
});
此代码适用于我在Chrome 44和FireFox 39中,但我刚刚在IE10中测试过它,它似乎根本不起作用。甚至不想发起最初的keydown
事件。我认为一般的想法仍然是正确的。如果您想要重复动画,则必须在动画结束后删除.div
类,以便您可以在keydown
上再次添加它。
已编辑固定事件在我的小提琴中触发'j'而不是'r'。
答案 3 :(得分:0)
$(document).on("keydown", function (e) {
var key = e.keyCode;
if(key==74 || key==106){
$('#box').addClass("div");
}
});