[英]jQuery looping doesn't seem to work
我正在尝试使用以下代码为鸟的翅膀设置动画(上下摆动一点):
$bird_wing_left = $(".bird_wing_left"); function rotate($bodysec) { $bodysec.animate({ transform: "rotate(30deg)" }, 0, function() { $(this).css({ transform: "rotate(70deg)" }); rotate($(this)) ; }); } rotate ($bird_wing_left) ;
.bird_wing_left { margin: 50px ; width: 100px ; height: 100px ; background: blue ; }
<div class="bird_wing_left"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
但是,代码不会循环。 它将旋转到70度并停在该处。 我在函数内部调用了函数,所以我不确定为什么不循环。
transform
调用不执行任何操作,因为您指定的动画时间为0
。 如果要立即进行转换,请在回调中使用css
。 此外,查看Chrome中的开发控制台会显示too much recursion
错误,因此您应该使用setInterval
重写代码:
$bird_wing_left = $(".bird_wing_left");
function rotate ($bodysec) {
(function () {
var $_bodysec = $bodysec ;
var $_angle = 30 ;
setInterval (function () {
$_bodysec.css({
transform: "rotate(" + $_angle + "deg)"
});
$_angle = $_angle == 70 ? 30 : 70 ;
}, 200) ;
}) () ;
}
rotate ($bird_wing_left) ;
$bird_wing_left = $(".bird_wing_left"); function rotate ($bodysec) { (function () { var $_bodysec = $bodysec ; var $_angle = 30 ; setInterval (function () { $_bodysec.css({ transform: "rotate(" + $_angle + "deg)" }); $_angle = $_angle == 70 ? 30 : 70 ; }, 200) ; }) () ; } rotate ($bird_wing_left) ;
.bird_wing_left { margin: 50px ; width: 100px ; height: 100px ; background: blue ; }
<div class="bird_wing_left"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.