这是我正在使用的代码。这是使列表显示在列表标题的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>
答案 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);
});