我怎样才能进入和退出出现的列表(使用.bind命令?

时间:2010-02-02 12:59:24

标签: jquery

这是我正在使用的代码。这是使列表显示在列表标题的mousenter上。 事情是它出现并且非常突然地消失。我该怎么做才能让这更顺畅?

非常感谢你的时间!

<script type="text/javascript"> 

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

function jsddm_open()
{  jsddm_canceltimer();
   jsddm_close();
   ddmenuitem = $(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()
{  $('#jsddm > li').bind('mouseenter', jsddm_open) 
  $('#jsddm > li').bind('mouseleave',  jsddm_timer)});

document.onclick = jsddm_close; </script>

1 个答案:

答案 0 :(得分:1)

设置可见性的两行:

   ddmenuitem = $(this).find('ul').css('visibility', 'visible');
   ddmenuitem.css('visibility', 'hidden');

请改为尝试:

   ddmenuitem = $(this).find('ul').show('slow');
   ddmenuitem.hide('slow');

旁白:

你最后几行可能就是这样。只是有点整洁:

$(document).ready(function(){  
    $('#jsddm > li').mouseover(jsddm_open) 
    $('#jsddm > li').mouseout(jsddm_timer)
    $(document).click(jsddm_close);
});

甚至:

$(document).ready(function(){  
    $('#jsddm > li').hover(jsddm_open, jsddm_timer) 
    $(document).click(jsddm_close);
});