Tengo un calendario, y cuando el usuario se desplaza sobre una celda, aparece un cuadro de información grande con detalles para esa fecha. Tengo problemas para hacer desaparecer el cuadro de información cuando el usuario se va.Implementación de un cuadro de información contextual
Básicamente lo quiero para que cuando el cursor del mouse se salga de la celda de calendario que está oculta en el cuadro de información, desaparecerá. Pero estoy teniendo problemas con esto porque mouseenter
y mouseleave
se arruinan al tener el cuadro de información como el elemento superior.
Así que traté de evitar esto usando divs "placeholders" que son transparentes, tienen la misma forma y ubicación que la celda del calendario debajo de ellos, y tienen un índice z de 1000 para que estén encima del cuadro de información. A continuación, aplico los eventos mouseenter
y mouseleave
a estos divs.
Sin embargo, hay dos problemas con esto. Uno, ahora he arruinado mi HTML semánticamente. Los divs no tienen otro propósito que sortear lo que parece ser una limitación. Y en segundo lugar, estropean mi selección de jQuery UI (la he aplicado a las celdas del calendario; un clic ya no selecciona una celda).
¿Hay una manera limpia de manejar la visualización de un cuadro de información? No habrá interacción del usuario con el cuadro de información, solo se mostrará información.
EDITAR: Aquí hay un código:
<li>
<div class="day-content">
</div>
<div class="day-content-placeholder">
</div>
</li>
y 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; }
y Javascript
var popup;
$('.week-content-placeholder')
.mouseenter(function()
{
popup = $('<div class="popup">'+a_lot_of_text+'</div>').insertAfter(this);
})
.mouseleave(function()
{
popup.remove();
});
Ese no es el código exacto, pero se entiende la idea. Esto funciona bien, pero como he dicho, dado que .week-content-placeholder
está por encima de .week-content
, la capacidad de selección con jQuery UI no funciona correctamente en .week-content
.
Puede ser útil saber cuál es el html de su calendario * es * para responder esta pregunta. –
Bueno, no es una pregunta muy específica del calendario. Es solo un div que tiene un evento de mouseenter que agrega otro div al lado. Este div tiene un gran ancho y alto, pero ahora oscurece el div debajo de él, bloqueando su evento mouseleave. – Nick
Nick, ¿Por qué no usa CSS "posición" para colocar su cuadro de información en la pantalla de modo que no obstruya completamente la celda del calendario? – Neil