2013-04-06 187 views
0

我正在研究一個用戶界面模塊:搜索窗體顯示/隱藏取決於用戶是否已經懸停在目標區域,或仍然有焦點在輸入文本字段。我只是有另一個調整關注...焦點懸停j​​Query停止動畫

我想能夠取消動畫(如淡出),如果我碰巧懸停在目標區域。目前,stop()似乎並沒有完成這項工作。

提示非常感謝。 TIA


這裏的演示:

http://jsfiddle.net/s2wEu/

當前腳本:

var topbar_search_hotspot = $('form[role="search"]'); 
var topbar_search_hideshow = $('form[role="search"] .row'); 

function fadeOutSearch() { 
    var element = $('#s'); 
    if (!element.hasClass("focus") && !element.hasClass("hover") && element.val() == "") { 
     $('form[role="search"] .row:visible').fadeOut("slow"); 
    } 
} 

topbar_search_hotspot.blur(function() { 
    topbar_search_hideshow.removeClass("focus"); 
    setTimeout(fadeOutSearch, 1000); 
}).focus(function() { 
    $(this).addClass("focus"); 
}); 

topbar_search_hideshow.hide(); 
topbar_search_hotspot.hover(function() { 
    if (topbar_search_hideshow.is(':animated')) { 
     topbar_search_hideshow.stop().animate({opacity:'100'}); 
    } else { 
     topbar_search_hideshow.fadeIn("slow"); 
    } 
}, function(e) { 
    setTimeout(fadeOutSearch, 1000); 
    topbar_search_hotspot.removeClass("hover"); 
}); 

topbar_search_hotspot.hover(function() { 
    $(this).addClass("hover"); 
    $('#s').focus(); 
}, function(){ 
    setTimeout(fadeOutSearch, 1000); 
    $(this).removeClass("hover"); 
}); 

回答

0

是否更換topbar_search_hideshow.stop().animate({opacity:'100'});topbar_search_hideshow.stop(false,true).hide().fadeIn();修復它在下面撥弄證明? http://jsfiddle.net/7BDCB/

+0

它似乎仍然通過w/the fadeout。只需將鼠標懸停在灰色區域內即可複製該行爲。 – piku 2013-04-07 04:46:15