javascript - 将鼠标悬停在父元素而非子元素上

标签 javascript jquery

我只想在鼠标悬停在父 li 而不是子 ulli 上时触发悬停。 这是我的代码,它不起作用

$('#menu-header-menu').on("mouseenter", ".menu-item:not(.menu-item .sub-menu)", function() {
 $(this).find(".sub-menu").slideToggle();
});

这是我的html代码

<ul id="menu-header-menu" class="menu" style="display: block;">
<li id="menu-item-1549" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1536 current_page_item menu-item-1549"><a href="myurl">Home</a></li>
<li id="menu-item-1627" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1627"><a href="myurl">Photo 1</a>
    <ul class="sub-menu" style="display: none;">
    <li id="menu-item-1631" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1631"><a href="myurl">Page1</a></li>
    <li id="menu-item-1630" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1630"><a href="myurl">Page 2</a></li>
    </ul>
</li>
<li id="menu-item-1626" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-1626"><a href="myurl">Photo 2</a>
    <ul class="sub-menu" style="display: block;">
    <li id="menu-item-1633" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1633"><a href="myurl">Page1</a></li>
    <li id="menu-item-1632" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1632"><a href="myurl">Page 2</a></li>
    </ul>
</li>
<li id="menu-item-1548" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1548"><a href="myurl">Project</a></li>
</ul>

非常感谢您的帮助。谢谢!

最佳答案

您始终可以阻止子元素上的事件传播来实现这一点:

您可以在 MDN 上阅读有关事件传播的更多信息, 但一般的想法是所有事件都在 DOM 树上传播,因此即使发生在子元素上的事件也会在其每个父元素上触发。

$('.parent').on('mouseenter', function () {
  console.log('mouseenter');
});

$('.child').on('mouseenter', function (e) {
  e.stopPropagation();
});
.parent {
  width: 300px;
  height: 300px;
  background-color: #ccc;
}

.child {
  width: 200px;
  height: 200px;
  background-color: #999;
}

.child > .child {
  width: 100px;
  height: 100px;
  background-color: #333;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
  <div class="child">
    <div class="child">
    </div>
  </div>
</div>

干杯。 :)

关于javascript - 将鼠标悬停在父元素而非子元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49578259/

相关文章:

javascript - 文件上传完成后如何将 uploadcare 小部件重置为原始状态

javascript - SQL 查询的 mongoose 等价物是什么

javascript - 获取复选框以显示是否选择了特定子类别下的特定项目

jquery - 如何使用 jquery sortable 保存表行的顺序而不使用 ".toArray()"或 ".serialize()"?

javascript - 我如何使用 AJAX 将隐藏值提交给 php

javascript - ClassName 样式在 react 中不起作用

Jquery冲突

javascript - 使用 Javascript 更快地调用 API

jquery - 在 jquery 中拖动元素时显示自定义图像

javascript - 如何让这个 jQuery 代码在相同的 html 元素上工作?