在鼠标悬停之前,下拉列表不会显示菜单项

时间:2012-07-19 13:06:57

标签: jquery

我正在尝试学习jquery,我得到了一个下拉菜单示例如下:

<html>
<head>
<title>CSS Dropdown</title>

<style type="text/css">

    /* General */
    #cssdropdown, #cssdropdown ul { list-style: none; }
    #cssdropdown, #cssdropdown * { padding: 0; margin: 0; }

    /* Head links */
    #cssdropdown li.headlink { width: 220px; float: left; margin-left: -1px; border: 1px black solid; background-color: #e9e9e9; text-align: center; }
    #cssdropdown li.headlink a { display: block; padding: 15px; }

    /* Child lists and links */
    #cssdropdown li.headlink ul { display: none; border-top: 1px black solid; text-align: left; }
    #cssdropdown li.headlink:hover ul { display: block; }
    #cssdropdown li.headlink ul li a { padding: 5px; height: 17px; }
    #cssdropdown li.headlink ul li a:hover { background-color: #333; }

    /* Pretty styling */
    body { font-family: verdana, arial, sans-serif; font-size: 0.8em; background-color: black; }
    #cssdropdown a { color: white; } #cssdropdown ul li a:hover { text-decoration: none; }
    #cssdropdown li.headlink { background-color: white; background-image: url(bg.gif); }
    #cssdropdown li.headlink ul { background-image: url(bg.gif); background-position: bottom; padding-bottom: 10px; }
</style>
<script language="JavaScript">
    window.onload = function()
    {
        var lis = document.getElementById('cssdropdown').getElementsByTagName('li');
        for(i = 0; i < lis.length; i++)
        {
            var li = lis[i];
            if (li.className == 'headlink')
            {
                li.onmouseover = function() { this.getElementsByTagName('ul').item(0).style.display = 'block'; }
                li.onmouseout = function() { this.getElementsByTagName('ul').item(0).style.display = 'none'; }
            }
        }
    }
    /* or with jQuery:
    $(document).ready(function(){
        $('#cssdropdown li.headlink').hover(
            function() { $('ul', this).css('display', 'block'); },
            function() { $('ul', this).css('display', 'none'); });
    });
    */
</script>
</head>

<body>
    <ul id="cssdropdown">

        <li class="headlink">
            <a href="http://google.com/">Search Engines</a>

            <ul>
                <li><a href="http://google.com/">Google</a></li>
                <li><a href="http://yahoo.com/">Yahoo</a></li>
                <li><a href="http://live.com/">Live Search</a></li>
            </ul>
        </li>
        <li class="headlink">
            <a href="http://shopping.com">Shopping</a>

            <ul>
                <li><a href="http://amazon.com/">Amazon</a></li>
                <li><a href="http://ebay.com/">eBay</a></li>
                <li><a href="http://craigslist.com/">CraigsList</a></li>
            </ul>
        </li>

    </ul>

</body>
</html>

然而,它对我来说很奇怪意味着下拉菜单有效但我只能在它上面找到菜单项。

1 个答案:

答案 0 :(得分:1)

如果我理解了这个问题,那么当你将其中一个下拉菜单悬停时,出现的框就是白色,你必须将光标移动到链接上,这样它们才能改变颜色并且可以看到。要解决此问题,您需要更改样式。要么改变

#cssdropdown li.headlink ul

有不同的背景(它继承了父元素的白色背景)和/或改变了

的样式
#cssdropdown li.headlink ul li a

尝试更改这些元素的背景属性,看看会发生什么。

修改:或更改color上的#cssdropdown li.headlink ul li a属性,因为这些元素中的文字是白色的,因此在白色背景下不可见。