2012-06-21 48 views
5

我有一個div,當鼠標進入/懸停在div時,我想反彈一次。JQuery UI反彈效果 - 在輸入div時只反彈一次

我在Chrome中使用的代碼,但不在Firefox或IE中使用。

http://jsfiddle.net/d7UjD/73/

在鉻根據需要它反彈一次,但在FF和IE彈跳推移只要鼠標保持在原位。

我也試過$('#box').one("mouseenter", function() {,但盒子反彈了一次,後來進入div的條目不會觸發效果。

有關爲什麼瀏覽器的行爲不同以及我能做些什麼的任何想法?

回答

11

LIVE DEMO

$("#box").hover(function(){ 
if (!$(this).data("bouncing")){ 
     $(this).effect("bounce", { direction: 'up', distance: 10, times: 1 }) 
      .data("bouncing", true); 
} 
},function() { 
    $(this).data("bouncing", false); 
}); 

一旦反彈,元素數據屬性將保持true布爾,
if聲明我們只是檢查它的truefalse內。
在鼠標離開時,我們將其設置爲false,以允許新的懸停和新的反彈! :)

你也可以寫上,如:

$("#box").on('mouseenter mouseleave',function(e) { 
    var el = $(this); 
    if(!el.data("b"))el.effect("bounce", {direction:'up',distance:10,times:1}); 
    el.data("b",e.type=="mouseenter"?true:false); 
}); 
+3

美麗。謝謝! –