【发布时间】:2011-11-18 22:15:46
【问题描述】:
如果鼠标悬停在 div 或 div 的任何嵌套元素上,我想显示一个工具栏。但是下面的 jQuery 1.7 解决方案只有在鼠标直接悬停在 div 上时才有效,只有在 item css 类中添加 padding 时才有可能。
<head>
<script type="text/javascript" src="jquery-1.7.min.js"></script>
<style type="text/css">
.toolbar { display: none; }
.item { padding: 1px; } /* doesn't work without padding! */
</style>
<title>Demo</title>
</head>
<body>
<div class="section">
<div class="item">
<p class="toolbar">TOOLS</p>
<p>content</p>
</div>
<div class="item">
<p class="toolbar">TOOLS</p>
<p>content</p>
</div>
</div>
<script type="text/javascript">
$(".section").on(
"mouseenter",
".item",
function(event) {
$(event.target).children('.toolbar')
.show(100);
}
)
$(".section").on(
"mouseleave",
".item",
function(event) {
$(event.target).children('.toolbar').hide();
}
)
</script>
</body>
1px 的内边距不会那么糟糕,但它会导致顶部和底部的内边距更大,并且此解决方法无法正常工作 - 尤其是当鼠标从左侧或右侧进入时。
如何在没有填充技巧的情况下处理 mouseenter 和 mouseleave 事件?
【问题讨论】:
-
我知道@ManseUK 发布了正确的答案,但我只是想添加一个关于填充技巧的快速说明。这工作(大部分时间)因为添加填充停止了margins collapsing,所以事件可以在
.item(event.target显然是你想要的)以及ps 上触发。跨度>
标签: javascript html jquery jquery-events mouseenter