2009-07-16 59 views
0

此代碼不工作,即時做錯了什麼?jQuery淡入淡出停止錯誤:jQuery(「。box」)。stop()。fadeIn();

Tnks。

var x; 
    x=jQuery(document); 
    x.ready(inicializarEventos); 

    function inicializarEventos() 
    { 
     var x; 
     x=jQuery(".Caja2"); 
     x.hover(entraMouse,saleMouse); 
    } 


    function entraMouse() 
    { 
     jQuery(".Caja2").stop().fadeOut(); 
    } 

    function saleMouse() 
    { 
     jQuery(".Caja2").stop().fadeIn(); 
    } 
+0

你可以給一些示例代碼,除了jQuery和一個小上下文嗎? 「.box」目前正在制定什麼效果? – Salty 2009-07-16 21:43:30

+0

另外,你得到的錯誤是什麼? – 2009-07-16 21:46:21

+0

有了這些代碼,你就可以在開始之前停止動畫? – 2009-07-16 21:50:19

回答

1

Dreas Grech從評論中是正確的。在調用.stop()方法之前,您需要檢查元素是否正在動畫。試試這個:

function entraMouse() { jQuery(".Caja2:animated").stop();jQuery(".Caja2").fadeOut(); } 
function saleMouse() {jQuery(".Caja2:animated").stop();jQuery(".Caja2").fadeIn(); } 
4

看來(我),你想有一個框,將淡出當鼠標置於其上,當鼠標移開將重新出現。這實際上比最初看起來更復雜。

當您撥打$().fadeOut()時,會發生什麼情況是jQuery對淡入淡出進行動畫處理,然後在該元素上設置display: none。因爲元素然後從顯示列表中刪除,mouseOut事件被觸發,這當然然後開始fadeIn()效果。只要您的鼠標懸停在該區域,就會導致無限循環的mouseInmouseOut事件。

您可能想要嘗試的是使用$().fadeTo()方法。在下面的例子中,當鼠標進入時,我將opacity屬性設置爲0.0,當鼠標離開時,回到1.0。由於元素永遠不會被隱藏(只是不可見),因此mouseOut事件能夠正確觸發。

jQuery(document).ready(inicializarEventos); 

function inicializarEventos() { 
    $(".Caja2").hover(entraMouse, saleMouse);   
} 

function entraMouse() { 
    jQuery(this).fadeTo("slow", 0.0) 
} 

function saleMouse() { 
    jQuery(this).fadeTo("slow", 1.0) 
} 

未來,我會建議你解釋爲什麼你認爲「代碼不工作」。您需要定義您希望代碼如何運行,以及當前結果是什麼。這會幫助我的其他人更好地知道如何回答你的問題。