【发布时间】:2011-01-25 18:40:15
【问题描述】:
我有一个日历,当用户将鼠标悬停在一个单元格上时,会出现一个带有该日期详细信息的大型信息框。虽然当用户离开时让信息框消失,但我遇到了一些麻烦。
我基本上想要它,这样当鼠标光标移出被信息框隐藏的日历单元格时,它就会消失。但我遇到了麻烦,因为 mouseenter 和 mouseleave 将信息框作为顶部元素搞砸了。
所以我试图通过使用透明的“占位符”div 来解决这个问题,它们的形状和位置与其下方的日历单元格相同,并且 z-index 为 1000,因此它们位于信息框上方。然后,我将 mouseenter 和 mouseleave 事件应用于这些 div。
这有两个问题。一,我现在在语义上搞砸了我的 HTML。 div 没有任何目的,只是为了绕过似乎是一个限制。其次,它们弄乱了我的 jQuery UI 选择(我已将它应用到日历单元格 - 单击不再选择单元格)。
是否有一种简洁的方式来处理显示信息框?不会有用户与信息框交互——它只是为了显示信息。
编辑:这是一些代码:
<li>
<div class="day-content">
</div>
<div class="day-content-placeholder">
</div>
</li>
和 CSS
li
{ position: absolute; width: 15%; height: 20%; top: ... left: ... }
.day-content
{ position: absolute; width: 100%; height: 100%; }
.day-content-placeholder
{ position: absolute; width: 100%; height: 100%; z-index: 1000; }
.popup
{ position: absolute; width: 300%; height: 300%; left: -150%; top: -150%; z-index: 500; }
和Javascript
var popup;
$('.week-content-placeholder')
.mouseenter(function()
{
popup = $('<div class="popup">'+a_lot_of_text+'</div>').insertAfter(this);
})
.mouseleave(function()
{
popup.remove();
});
这不是确切的代码,但你明白了。这没问题,但就像我说的,由于.week-content-placeholder 高于.week-content,jQuery UI 的选择功能在.week-content 上无法正常工作。
【问题讨论】:
-
了解日历的 html 是什么可能有助于回答这个问题。
-
嗯,这不是一个非常具体的日历问题。它只是一个具有 mouseenter 事件的 div,该事件会在其旁边附加另一个 div。这个 div 有很大的宽度和高度,但它现在遮住了它下面的 div,阻止了它的 mouseleave 事件。
-
尼克,你为什么不使用 CSS“位置”将你的信息框放在屏幕上,这样它就不会完全挡住日历单元格?
-
是的,我知道。但它有助于了解您正在使用哪些元素来为您的问题提供有用、具体、不仅仅是插件库的答案。
-
这确实是设计的一部分。日历的每个单元格中的文本都太小了,因此用户将鼠标移到那里,单元格上方的弹出窗口大到足以容纳大量的信息。如果我将弹出窗口移动到不同的位置,它可能会使用户混淆它对应的内容。
标签: javascript jquery hover