我正在尝试使用jQuery和CSS创建一个下拉菜单 Here is jsFiddle
但这似乎不太好用。任何人都可以指出我错过了什么吗?
答案 0 :(得分:1)
这是工作代码,但它比你的更复杂:
var timer;
function openMenu() {
$(this).addClass('open');
}
function keepOpen() {
clearTimeout(timer);
}
function closeMenu() {
$(this).removeClass('open');
timer = setTimeout(function() {closeMenu(this);}, 50);
}
$('#userbox').hover(keepOpen, closeMenu);
$('#userbox').click(openMenu);
答案 1 :(得分:1)
我可以用jQuery提出最简单的解决方案:
$('#userbox h3').click(function() {
$('#userbox ul').show('100');
});
$('#userbox').bind('mouseleave', function() {
$('#userbox ul').hide('100');
});
答案 2 :(得分:1)
<强> DEMO fiddle 强>
$('#userbox').click(function(){
$(this).addClass('open');
}).mouseleave(function(){
$(this).removeClass('open');
});
<强> DEMO fiddle 2 强>
$('#userbox').bind('click mouseleave',function(ev){
ev.type === 'click' ? $(this).addClass('open') : $(this).removeClass('open');
});
答案 3 :(得分:0)
您当前的代码是:
<div id="userbox" onClick="$(this).addClass('open');" onMouseOut="$(this).removeClass('open');">
<h3>Administrator</h3>
<ul>
<li><a href="#">Settings</a></li>
<li><a href="#">Logout</a></li>
</ul>
</div>
onClick是我认为错的,它应该是onmouseover。当您将其更改为:
<div id="userbox" onmouseover="$(this).addClass('open');" onMouseOut="$(this).removeClass('open');">
<h3>Administrator</h3>
<ul>
<li><a href="#">Settings</a></li>
<li><a href="#">Logout</a></li>
</ul>
</div>
下拉菜单有效。
希望这个答案有所帮助。
答案 4 :(得分:0)