2011-04-18 61 views
0

在下面的示例中,我很好奇我仍然可以使用滑動和滑動動畫顯示ul。我的意思是,slideUp/slideDown是無顯示的,在這個例子中,你似乎正在使用另一個CSS屬性,即可見性。在函數jsddm_open上,我希望UL能夠滑入並滑出。謝謝你的時間。滑動或動畫時綁定事件

var timeout = 500; 
var closetimer = 0; 
var ddmenuitem = 0; 

function jsddm_open() 
{ jsddm_canceltimer(); 
    jsddm_close(); 
    dmenuitem = $(this).find('ul').css('visibility', 'visible'); 

} 

function jsddm_close() 
{ if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');} 

function jsddm_timer() 
{ closetimer = window.setTimeout(jsddm_close, timeout);} 

function jsddm_canceltimer() 
{ if(closetimer) 
    { window.clearTimeout(closetimer); 
     closetimer = null;}} 

$(document).ready(function(){ 

$('#menudropdown > li').bind('mouseover', jsddm_open) 
    $('#menudropdown > li').bind('mouseout', jsddm_timer) 

}); 

document.onclick = jsddm_close; 

回答

0

退房jQuery函數.slideToggle():

http://api.jquery.com/slideToggle/

這將允許您,而不必檢查它們當前的知名度狀態動畫的元素。

EDIT

這是可能的選擇指定作爲變量並將其傳遞函數之間。

function jsddm_open() 
{ 
    var current_element = $(this); 
    jsddm_canceltimer(); 
    jsddm_close(current_element); 

    $("ul", this).slideDown(); 
} 

function jsddm_close(current_element) 
{ 
    if(ddmenuitem) ddmenuitem.css('display', 'none'){ 
     current_element.slideUp();} 

;} 
+0

我曾嘗試輸入$(「ul」,this).slideUp();或$(「ul」,this).slideDown();但失敗了,只要我試過:$(「ul」,this).slideToggle();一切正常。 – 2011-04-18 18:49:49

+0

爲什麼我是一個本地白癡的原因是因爲,在我的CSS中,我未能附加,可見性被設置爲隱藏。我將css中的引用移除到visibility屬性,並將display屬性設置爲none。這允許我使用幻燈片和slideDown。 – 2011-04-18 18:54:29

+0

很高興能幫到您? – 2011-04-18 19:00:55