为什么元素 display 属性 没有被重新定义?

Why isn't the element display property being redefined?

问题是 div 元素 class layer 被添加到 DOM,但没有显示,无论如何,我已经将显示 属性 设置为 flex 到 class layer

    $("#elem").click(function(e) {
            if (e.target.classList.contains("myClass")) {
                $("*").hide();
                $("body").prepend(`<div class="layer">Hey!</div>`);
            }
  });
.layer {
    display: flex;
    justify-content: center;
    align-items: center;
    background: rgb(55, 55, 55);
    height: 100vh;
    width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div id="elem" class="myClass">click me</div>

你的问题是

$("*").hide();

如果将其更改为

$("body *").hide();

$("#elem").hide();

它应该可以解决您的问题

问题

您正在使用 * 作为选择器。

  • selector selects all elements in the document, including html, head and body

解决方案

$("*").hide()替换为$("#elem").hide()