2011-04-18 67 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