У меня небольшая проблема с функциями jQuery slideUp и slideDown.
У меня есть вертикальное меню с вертикальным подменю.
Когда пользователь входит в пункт меню, у которого есть подменю, он должен показать его. Это часть, которая работает.
Когда пользователь покидает пункт меню и переходит к пункту подменю, он все равно должен быть виден.
Эту проблему я пытался уловить с помощью функции setTimeout, которая удалит (slideUp) подменю через 1500 мс. Если пользователь переместит свою мышь в подменю в это время, setTimeout будет очищен (clearTimeout)
Но когда пользователь быстро наводит указатель мыши на пункты главного меню, отображаются все подменю, а содержимое оригинальной страницы будет перемещено вниз.
Изображение: http://i43.tinypic.com/5ww8yq.png
Это когда я очень быстро перемещаю мышь по всем пунктам главного меню.
Как и должно быть:
Когда пользователь перемещает мышь к пункту главного меню, должно отображаться подменю. Когда он перемещается в другой пункт главного меню, текущее подменю должно быть невидимым, а другое подменю должно быть показано.
#menu
{
background-color: white;
width: 1000px;
margin-top: 10px;
height: 30px;
position: relative;
}
#menu ul li
{
float: left;
display: inline;
width: 125px;
height: 30px;
line-height: 30px;
text-align: center;
}
#menu ul li.right { float: right; }
#menu ul li a
{
top: 5px !important;
text-decoration: none;
font-size: 20px;
height: 30px;
color: #01224D;
}
.submenu
{
background-color: #01224D;
width: 1000px;
height: 30px;
color: white;
display: none;
}
.submenu ul li
{
display: inline;
width: 100px;
height: 30px;
line-height: 30px;
float: left;
text-align: center;
}
.submenu ul li.right { float: right; }
.submenu ul li a
{
text-decoration: none;
font-size: 20px;
height: 30px;
color: white;
}
HTML:
<div id="menu">
<ul>
<li><a href="index.php">Home</a></li>
<li>
<a class="mainMenuA" id="menu-1" href="#">Lederwaren</a>
</li>
<li><a class="mainMenuA" id="menu-2" href="#">Tassen</a></li>
<li><a class="mainMenuA" id="menu-3" href="#">Koffers</a></li>
<li><a class="mainMenuA" id="menu-4" href="#">Kleding</a></li>
<li><a class="mainMenuA" id="menu-5" href="#">Accessoires</a></li>
<li class="right"><a href="vestigingen.php">Vestigingen</a></li>
</ul>
</div><!-- menu-->
<div class="submenu" id='submenu-1'>
<ul>
<li><a href="#">Submenu</a></li>
</ul>
</div><!-- submenu -->
<div class="submenu" id='submenu-2'>
<ul>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
</ul>
</div><!-- submenu -->
<div class="submenu" id='submenu-3'>
<ul>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
</ul>
</div><!-- submenu -->
<div class="submenu" id='submenu-4'>
<ul>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
</ul>
</div><!-- submenu -->
<div class="submenu" id='submenu-5'>
<ul>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
<li><a href="#">Submenu</a></li>
</ul>
</div><!-- submenu -->
JS:
$(document).ready(function(){
var timer;
var hover;
$('.mainMenuA').hover(
function()
{
var id = $(this).attr('id').split('-')[1];
$('#submenu-'+id).slideDown();
},
function()
{
var id = $(this).attr('id').split('-')[1];
timer = setTimeout(function() { $('#submenu-'+id).slideUp(); },1500);
}
);
$('.submenu').hover(
function()
{
clearTimeout(timer);
},
function()
{
var id = $(this).attr('id');
timer = setTimeout(function() { $('#'+id).slideUp(); },1500);
}
);
});
Надеюсь, кто-нибудь сможет мне помочь.