Я не смог обнаружить, что он не исчезает, но, так как исчезновение быстрое, возможно, это просто я не могу его найти. Я обнаружил, что иногда элементы не исчезают. Это потому, что они скрыты, пока они находятся в процессе исчезновения. Чтобы решить эту проблему, вам нужно позвонить stop(true, true)
, чтобы остановить любую текущую анимацию и перейти к ее концу, прежде чем скрыться.
Я сделал некоторые изменения в вашей DOM, чтобы использовать классы для идентификации, а не ID.
<ul id="nav">
<li id="item1">Item1</li>
<li id="item2">Item2</li>
<li id="item3">Item3</li>
</ul>
<div class="item1 content">
blah1
</div>
<div class="item2 content">
blah2
</div>
<div class="item3 content">
blah3
</div>
Единственное, что я хотел бы изменить, это добавить стиль .content { display: none; }
вместо вызова $('.content').hide();
в DOMReady, поскольку это может привести к мерцанию элементов во время загрузки страницы.
Теперь, когда они являются классами, мы можем сократить это до одного метода:
$(function() {
$("#nav li").mouseover(function(){
$(".content").stop(true, true).hide(),
$("." + $(this).attr('id')).fadeIn("fast");
});
});
Я изменил hover
на mouseover
, так как наведение срабатывает дважды (один раз при наведении мыши и один раз при наведении мыши), что, кажется, не то, что вы хотите.
Второй селектор в обратном вызове при наведении мыши ищет любой элемент того же класса, что и идентификатор текущего элемента. Поэтому наведите курсор мыши на #item3
и найдите .item3
.