使用绑定事件时的SlideUp或Animate

时间:2011-04-18 18:42:58

标签: jquery menu bind

在下面的例子中,我很好奇我仍然可以使用向上滑动和滑动来为ul显示动画。我的混淆意味着,slideUp / slideDown显示为none,看起来在这个例子中你正在使用另一个css属性,visibility。在函数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; 

1 个答案:

答案 0 :(得分:0)

查看jquery函数.slideToggle():

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

这将允许您为元素设置动画,而无需检查其当前的可见性状态。

修改

可以将选择器指定为变量并在函数之间传递。

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();}

;}