2012-06-07 281 views
0

如何讓hover()連續運行?當我將鼠標放在#up_btn上時,我想要的是,top屬性保持動畫效果。現在,它只運行一次。懸停動畫

$(document).ready(function(){ 
    $("#up_btn").hover(function(){ 
     var new_num = parseInt($("#move_box").css("top")); 
     $("#move_box").css("top", new_num + 1); 
    }) 
}) 
+0

請在您的頁面的HTML中添加。 – root

+2

ProTip™:您不必在jQuery上的'top'上使用'parseInt'。只要'.css('top','+ = 1')'! – Ryan

+0

@minitech不知道,非常有用。 –

回答

0
$(document).ready(function() { 
    $("#up_btn").mouseenter(function() { 
     var new_num = parseInt($("#move_box").css("top")); 
     $("#move_box").css("top", new_num + 1); 
    }) 
}) 
+0

謝謝,但這隻會運行一次...也許這不是工作...但是,謝謝你們都一樣 – RogerWu

2

您可以使用setInterval,使你的代碼運行多次,然後用clearInterval停止動畫:

$(document).ready(function() { 
    var timer; 

    $("#up_btn").hover(function() { 
     timer = setInterval(function() { 
      $("#move_box").css('top', '+= 1'); 
     }, 100); // Change the interval as you see fit. 
    }, function() { 
     clearInterval(timer); 
    }); 
}); 
+0

謝謝,現在是工作。 – RogerWu

+0

還有一個問題,是否不知道使用事件來監聽懸停並讓它始終工作? – RogerWu

+0

@RogerWu:對不起,我不太明白你的意思是「總是工作」。你能重新表述嗎? – Ryan

1

使用setIntervalsetTimeout。例如:

var move_box_interval; 
$(document).ready(function() { 
    $("#up_btn").hover(function() { 
     // Change the interval to be appropriate. It's in milliseconds. 
     move_box_interval = setInterval(move_box, 100); 
    }); 

    // Change this to the appropriate trigger. 
    $("#up_btn").mouseout(function() { 
     clearInterval(move_box_interval); 
    }); 
}); 

function move_box() { 
    $("#move_box").css("top", "+= 1"); 
} 
+0

謝謝〜它也是工作〜 – RogerWu