添加position属性导致mouseenter事件出现bug,为什么?

发布于 2022-09-12 13:05:19 字数 2439 浏览 22 评论 0

<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title></title>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    #box {
        width: 800px;height: 300px;
        border:1px black solid;
        margin: 20px auto;
        position: relative;
    }
    li{list-style: none;}
    .ulTitle {
        width: 200px;height: 200px;
        position: absolute;
        left: 50px;top: 50px;
    }
    .ulTitle li {
        width: 50px;height: 50px;
        background-color: blanchedalmond;
        font-family:'微软雅黑';
        font-size: 8px;
        text-align: center;
        line-height: 50px;
        cursor: pointer;
    }
    .ulTitle .target {
        background-color: rgb(145, 199, 84);
        .ulImg li{
            display: none;
        }
        .ulImg .show {
            display: block;
        }
    </style>
    <script src="jquery-3.5.1.js"></script>
    <script>
        $(function () {
             // 1 监听移入事件
            $('.ulTitle li').mouseenter(function(){
                // 1.1 为移入的当前li添加上ulTitle target类,并取消其他同级元素的此类
                $(this).addClass('ulTitle target')
                $(this).siblings().removeClass('ulTitle target');
                // 1.2 获取所移入li的索引
                var $index = $(this).index();
                // 1.3 获取需展示的图片
                var $img = $('.ulImg li').eq($index);
                // 1.4 展示目标图片,并隐藏其他图片
                $img.addClass('ulImg show');
                $img.siblings().removeClass('ulImg show')
            })




        });
        // 该练习出现bug,为ul添加position属性后,鼠标移入事件高频次多次执行。不会修改。
    </script>
</head>
<body>
    <div id="box">
        <ul class="ulTitle">
            <li class="target">保管箱</li>
            <li>手机</li>
            <li>手环</li>
            <li>电视</li>
        </ul>
        <ul class="ulImg">
            <li class="show"><img src="/2原生动画/img/111.png" alt="" srcset=""></li>
            <li><img src="/2原生动画/img/222.png" alt="" srcset=""></li>
            <li><img src="/2原生动画/img/333.png" alt="" srcset=""></li>
            <li><img src="/2原生动画/img/444.png" alt="" srcset=""></li>
        </ul>
    </div>
</body>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一抹苦笑 2022-09-19 13:05:19

把ul的class附加到li上,导致样式异常

// 原来
$(this).addClass('ulTitle target')
$(this).siblings().removeClass('ulTitle target');

// 修改后

$(this).addClass('target')
$(this).siblings().removeClass('target');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文