Я использую JavaScript, чтобы скрыть изображение и показать скрытый под ним текст. Но, когда текст отображается, если вы прокручиваете его, он запускает событие mouseout на контейнере, которое затем скрывает текст и снова показывает изображение, и оно просто переходит в странный цикл.Проблемы с событием mouseout
HTML, выглядит следующим образом:
<div onmouseover="jsHoverIn('1')"
onmouseout="jsHoverOut('1')">
<div id="image1" />
<div id="text1" style="display: none;">
<p>some content</p>
<p>some more content</p>
</div>
</div>
И Javascript (Он использует Scriptaculous):
function jsHoverIn(id) {
if(!visible[id]) {
new Effect.Fade ("image" + id, {queue: { position: 'end', scope: id } });
new Effect.Appear ("text" + id, {queue: { position: 'end', scope: id } });
visible[id] = true;
}
}
function jsHoverOut (id) {
var scope = Effect.Queues.get(id);
scope.each(function(effect) { effect.cancel(); });
new Effect.Fade ("text" + id, {queue: { position: 'end', scope: id } });
new Effect.Appear ("image" + id, {queue: { position: 'end', scope: id } });
visible[id] = false;
}
Это кажется очень простой, но я просто не могу обернуть мою голову вокруг него.
Это также работает, если вы хотите сделать высоту DIV 100% от ее родительского элемента (то есть на боковой панели); хотя приведенное выше не будет полезно, если ваш «text1» DIV содержит любые якоря, поскольку им будет препятствовать дополнительный DIV. –