jQuery实现下拉菜单

<!--@description-->
<!--@author beyondx-->
<!--@date Created in 2022/08/01/ 10:18-->
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>jQuery下拉菜单</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style: none;
        }

        .wrap {
            width: 330px;
            height: 30px;
            margin: 100px auto 0;
            padding-left: 10px;
            background-image: url(images/bg.jpg);
        }

        .wrap li{
            background-image: url(images/libg.jpg);
        }

        .wrap > ul > li {
            float: left;
            margin-right: 10px;
            position: relative;
        }

        .wrap a {
            display: block;
            height: 30px;
            width: 100px;
            text-decoration: none;
            color: #000;
            line-height: 30px;
            text-align: center;
        }

        .wrap li ul {
            position: absolute;
            top: 30px;
            display: none;
        }
    </style>
</head>
<body>
<div class="wrap">
    <ul>
        <li>
            <a href="javascript:void(0);">一级菜单1</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单1</a></li>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0);">一级菜单1</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单1</a></li>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
            </ul>
        </li>
        <li>
            <a href="javascript:void(0);">一级菜单1</a>
            <ul>
                <li><a href="javascript:void(0);">二级菜单1</a></li>
                <li><a href="javascript:void(0);">二级菜单2</a></li>
                <li><a href="javascript:void(0);">二级菜单3</a></li>
            </ul>
        </li>
    </ul>
</div>
</body>
    <script src="jquery-1.12.4.js"></script>
    <script>
        $(function () {
            //需求: 给一级菜单li设置鼠标移入事件,二级菜单显示。
            //      给一级菜单li设置鼠标离开事件,二级菜单隐藏。

            //1.给一级菜单li设置鼠标移入事件,二级菜单显示。
            // 获取一次菜单li 的方式
            $('.wrap > ul > li').mouseover(function () {
                // $('.wrap > ul > li > ul').css('display', 'block');
                // console.log(this); // 谁触发了 鼠标移入事件, 那这个 this 还是一个 dom对象
                // 如果希望这个 dom对象, 调用 jquery方法, 那需要 $(this), 将 dom对象 -> jquery对象
                // 只获取 ul 这个元素
                // $(this).children('ul').css('display', 'block'); // 显示就是修改 display属性为block
                $(this).children('ul').show(); // show()方法本质还是更新 display属性为block
            });

            //2.给一级菜单li设置鼠标离开事件,二级菜单隐藏。
            $('.wrap > ul > li').mouseout(function () {
                $(this).children('ul').hide(); // hide()本质上, 还是更新 display属性为 none
            });

            //3.思考题:
            //为什么不给一级菜单a标签设置鼠标移入和离开事件?
            //因为这样的话,选不到二级菜单.
            // 首先找到a

            // console.log($('.wrap > ul > li > a'));
            // 鼠标移入, 显示
            // $('.wrap > ul > li > a').mouseover(function () {
            //     // console.log(this); // output: <a href="javascript:void(0);">一级菜单1</a> 这说明 this是 dom对象
            //     // console.log($(this)); // output: jQuery.fn.init [a, context: a] 这说明 $(this) 是 jquery对象
            //     // 找 a 的 下一个兄弟 ul
            //     // console.log($(this).siblings('ul')); // output: jQuery.fn.init [ul, prevObject: jQuery.fn.init(1), context: a]
            //     $(this).siblings('ul').show();
            // });
            //
            // // 鼠标移出, 隐藏
            // $('.wrap > ul > li > a').mouseout(function () {
            //     $(this).siblings('ul').hide();
            // });


        });
    </script>
</html>


在这里插入图片描述

posted on 2022-08-01 11:04  beyondx  阅读(302)  评论(0编辑  收藏  举报

导航