需要在悬停Jquery时反复旋转

时间:2012-03-01 12:13:31

标签: jquery jquery-animate rotation mouseover repeat

使用jQuery旋转http://code.google.com/p/jqueryrotate/wiki/Examples将对象设置为0度到40度

正常工作,鼠标悬停,鼠标移除 - 但我需要它在两点之间自动循环动画,只要它悬停

需要在午餐时间为客户完成......帮助!

    jQuery("#leafmealonepoint").rotate({ 
     bind: 
 { 
    mouseover : function() { 
        jQuery(this).rotate({animateTo:40})
    },
    mouseover : function() { 
        jQuery(this).rotate({animateTo:0})
    }
         } 

更新

好的,所以我试图像这样使用setInterval - 缺少什么?

    function move(){
       jQuery('#leafmealonepoint').rotate({animateTo:40}, function(){
       jQuery(this).rotate({animateTo:0});
       });
     }    

    jQuery('#leafmealone').hover(
        function() {
      hoverInterval = setInterval(move, 1000);
        },
      function(){
    clearInterval(hoverInterval);
    }
    );

进一步更新

     jQuery(function(){
         var leafmealone
         jQuery('#leafmealone').mouseenter(function(){
             leafmealone = setInterval(function()
             {jQuery('#leafmealonepoint').rotate({animateTo:40},
     jQuery('#leafmealonepoint').rotate({animateTo:0}))}, 1000);
         }).mouseleave(function(){clearInterval(leafmealone);
         });
     });  

我错过了什么?

3 个答案:

答案 0 :(得分:1)

如果你想在鼠标位于该元素上时重复该动画,则需要setInterval(),否则这将执行一次动画并在完成时停止,然后鼠标离开将再次执行并再次停止。

编辑:你还有2个鼠标悬停事件,我认为将鼠标悬停需要鼠标悬停或直接使用hover()是错误的。

答案 1 :(得分:1)

尝试做:

jQuery(function(){
    var leafmealone
    jQuery('#leafmealone')
    .mouseenter(function(){
        leafmealone = setInterval(function() {
            jQuery('#leafmealonepoint')
            .rotate({animateTo:40})
            .rotate({animateTo:0});
        }, 1000);
    })
    .mouseleave(function(){
        clearInterval(leafmealone);
    });
});

我不熟悉旋转方法,但通常是动画完成/链接的方式。

答案 2 :(得分:0)

这是解决方案

 function leafmealone() {
        jQuery('#leafmealonepoint').stop().rotate({ angle:0, animateTo: 40, duration:600, callback: function() {
            jQuery('#leafmealonepoint').stop().rotate({ animateTo: 0, duration:600});
            }
        });
}

    jQuery(function() {
    jQuery('#leafmealone').hover(function(){
leafmealone();
hoverInterval = setInterval(leafmealone, 1200);
    }, function(){
      clearInterval(hoverInterval);
    });
   })