我有类似Gmail的Signout机制,这样当您将鼠标悬停在用户名(右上角)时,它会向下滑动一个包含“退出”链接的菜单。用户名位于浮动列表中,而滑出的菜单位于内部列表中(未浮动)。滑出/使用jQuery执行。
这是它应该做的:
这就是它目前所做的:
感知解决方案:我相信应该有一个if
子句,它检查光标是否在内部列表中并保持内部列表打开,这就是让我难以接受的部分。
编辑:以下是当前代码:
HTML:
<ul id="user_spot">
<li><a href="#"><span class="username">username</a>
<ul id="user_spot_links">
<li><a href="/home/sign?out=y">Sign Out</a></li> <br />
</ul>
</li>
</ul>
CSS:
ul#user_spot li {
float:left;
position:relative;
}
ul#user_spot_links {
position:absolute;
top:20px;
display:none;
}
ul#user_spot_links li {
float:none;
clear:both;
}
JS:
$('ul#user_spot li a').hover(function() {
$('ul#user_spot_links').slideDown('slow');
return false;
}, function() {
// this is where I believe the needed code should be"
$('ul#user_spot_links').slideUp('slow');
});
答案 0 :(得分:4)
你不需要JS。
检查这个小提琴:http://jsfiddle.net/PaKnc/
基本上滑下来的UL是你悬停在上面的LI的孩子。您可以在CSS中操纵子项的CSS属性。
例如:
#parent #child {
style1;
}
#parent:hover #child {
style2;
}
此处,style1
和style2
可能完全不同。在我们的例子中,我们通过改变display
属性来利用这一点。
答案 1 :(得分:1)
问题在于,当您需要退出用户名锚点以将鼠标悬停在下拉列表上时。简单的解决方案是将悬停选择器更改为li
而不是a
。然后,即使您仍然悬停在下拉列表上,也不会退出。