jQuery鼠标悬停链接显示隐藏的div

13

我在extratorrent网站上发现了类似下面图片的mouseover事件。

alt text http://img3.imageshack.us/img3/4516/usercommment999.jpg

当你将鼠标悬停在用户名链接上时,它会显示一个隐藏的div。非常简洁和流畅。

我是jQuery的新手,请问有人可以告诉我如何开始正确的轨道来做到这一点吗?谢谢。

更新1:

我写了类似下面的东西,试图得到结果。问题是当我移开鼠标指针后,这个Div不会停留,它会立即消失。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
       <script type="text/javascript">
        $(document).ready(function()
        {


    $("#show_div").mouseover(function() { $("#hello").css('visibility','visible'); });
    $("#show_div").mouseout(function() { $("#hello").css('visibility','hidden'); });


        });
        </script>

    </head>

    <body>

    <a id="show_div" href="#">Link text</a> 
    <div id="hello" style="visibility:hidden;">
        <ul>
      <li>Coffee</li>
      <li>Tea</li>
      <li>Milk</li>
    </ul>
    </div>


    </body>
    </html>

当鼠标悬停在 Div 上时,如何让该 Div 保持可见?

3个回答

13

当鼠标悬停在链接文本上时,您将 div "hello" 的可见性设置为 visible。然后在鼠标悬停在 div "hello" 上时,您还将 div "hello" 的可见性设置为 visible。在 div "hello" 的鼠标移出事件中,您将其可见性设置为 "hidden"。类似于这样:

$("#show_div").mouseover(function() { $("#hello").css('visibility','visible'); });
$("#hello").mouseover(function() { $("#hello").css('visibility','visible'); });
$("#hello").mouseout(function() { $("#hello").css('visibility','hidden'); });

因此,它需要3个步骤...谢谢。 - Narazana
我需要实现这样的功能,并在#show_div上添加了一个mouseout事件。$("#show_div").mouseout(function() { $("#hello").delay("fast").css('visibility','hidden');});我的想法是列表项应该在延迟后消失,但这并没有起作用。如果我去掉延迟,列表项会在鼠标移开链接时立即消失。有了延迟,列表项永远不会消失。有什么想法吗?谢谢! - AggieMan
我进一步研究了一下,发现为了使其正常工作,我需要执行以下操作:$("#show_div").mouseout(function() { setTimeout(function () {$("#hello").css('visibility','hidden');}, 200); }); - AggieMan

6
您可以使用.hover函数:
$(function() {
    $('#divOne').hover(function() { 
        $('#divTwo').show(); 
    }, function() { 
        $('#divTwo').hide(); 
    });
});

在您有两个div的地方:

<div id="divOne">div one</div>
<div id="divTwo" style="display: none;">div two</div>

更新:

如评论部分所述,如果鼠标离开第一个

,第二个
将消失。有许多插件可以帮助您实现所需的行为。这个看起来特别不错。


1
问题在于,如果用户将鼠标移动到新显示的 divTwo 中,当鼠标离开 divOne 时,它将从他们下面消失。这不是理想的用户体验。 - T.J. Crowder
请查看问题中的更新1。 - Narazana
1
@Morron:请查看答案中的更新1。 - T.J. Crowder

0

通过一个简单的HTML:

<div class="div1">Hover me</div>
<div class="div2" style="display: none">Hi, there</div>

当经过 div1 时,显示 div2,并在用户进入后再隐藏它,直到用户退出为止。
<script type="text/javascript">
$('.div1').hover(function() {$('.div2').show()});
$('.div2').hover(function() {}, function() {$('.div2').hide()});    
</script>

这是一个快速的,非最优解决方案,但即使两个div不相邻也可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接