2011-03-23 91 views
4

我試圖建立一個菜單,其中只有第一個項目默認顯示,當您將鼠標懸停在其上時,剩下的項目會滑出,並在鼠標離開時再次隱藏。它主要工作,但如果鼠標在完成滑出之前退出,則隱藏功能不會被調用。我認爲stop()應該照顧這個,但它似乎沒有任何影響。jquery .stop()不工作

$(function(){ 
    $("#menubar").children(".breadcrumbs").children("li + li").hide(); 

    $("#menubar .breadcrumbs").hover(function() { 
     $(this).children("li + li").stop().show("slide", {}, 'slow'); 
    }, function() { 
     $(this).children("li + li").stop().hide("slide", {}, 'slow'); 
    }); 
}); 

jsFiddle demo

任何人能看到我在做什麼錯?

回答

7

我不是最大的動畫天才,但我敢打賭,這與你在每個處理程序中重建jQuery對象有關。試試這個:

$(function(){ 
    var children = $('#menubar .breadcrumbs').children('li + li'); 
    children.hide(); 

    $("#menubar .breadcrumbs").hover(function() { 
     children.stop().show("slide", {}, 'slow'); 
    }, function() { 
     children.stop().hide("slide", {}, 'slow'); 
    }); 
}); 

編輯 — @melee指出在評論這一特定設置的行爲並不總是穩定。如果小心地將鼠標放在「主頁」<li>(靠近「>」字符)的右邊緣,那麼有時候動畫的排序就會嚇倒。目前還不清楚爲什麼,但瀏覽器對於元素應該呈現的位置感到非常困惑。

+0

不知道這是特定於jsFiddle或Firefox,但當你把鼠標放在'Home>'胡蘿蔔上,它會變得瘋狂。 – Nic 2011-03-23 15:19:12

+0

@melee它不會在Chrome ... – Pointy 2011-03-23 15:28:04

+0

@melee哇,你是對的,這是奇怪的 - 我想知道FF4是否修復了... – Pointy 2011-03-23 15:29:18

0

你有嘗試改變這些來改變所需的效果的STOP(),功能,(真,真),(假,假)參數嗎?

+0

我已經嘗試不同的組合,但沒有人可以做任何區別。 – 2011-03-23 14:47:02

+0

它確實如果你這樣做沒有幻燈片(http://jsfiddle.net/JcFT2/) – Tjirp 2011-03-23 14:50:10

+0

整點是,他想動畫... – Pointy 2011-03-23 14:57:06

-1

停止功能的定義是

.stop([ clearQueue ], [ jumpToEnd ]) 

的公報網站去...

clearQueue:布爾值,指示是否 刪除排隊動畫爲好。 默認爲false。

jumpToEnd:布爾值,指示 是否立即完成當前動畫 。默認爲false。

這是http://api.jquery.com/stop/