У меня есть простое горизонтальное меню, которое использует JQuery для вертикального скольжения вниз по div с неупорядоченным списком при нажатии родительского href.Он отлично работает, когда у меня только две вкладки, но не когда их больше 2. Когда их больше 2, что-то происходит с SlideToggle, и в итоге происходит переключение несколько раз, а не один раз.Я относительно новичок в JQuery, и это поставило меня в тупик.Любая помощь очень ценится!
Вот JQuery
<script type="text/javascript">
$(function(){
$(document).ready(function () {
$('a.menu_button').click(function (e) {
e.preventDefault();
var $this = $(this);
var ulId = $this.attr("href");
$this.parent().find("ul").not(ulId).slideUp("medium", function() {
$ul = $this.parent().find("ul" + ulId )
$ul.slideToggle('medium');
});
});
});
});
</script>
А вот HTML.Я не включил css, потому что я не думал, что что-то из этого было уместно, но я могу опубликовать его, если поможет.
<div id="menus">
<a href="#menu1" class="menu_button" id="home"></a>
<a href="#menu2" class="menu_button" id="aboutus"></a>
<a href="#menu3" class="menu_button" id="admissions"></a>
<ul class="the_menu" id="menu1">
<li><a href="#">A Website #3</a></li>
<li><a href="#">A Website #4</a></li>
<li><a href="#">A Link #1</a></li>
<li><a href="#">A Link #2</a></li>
<li><a href="#">A Website #3</a></li>
<li><a href="#">A Website #4</a></li>
<li><a href="#">A Link #3</a></li>
<li><a href="#">A Link #4</a></li>
</ul>
<ul class="the_menu" id="menu2">
<li><a href="#">A Website #1</a></li>
<li><a href="#">A Website #2</a></li>
<li><a href="#">A Link #1</a></li>
<li><a href="#">A Link #2</a></li>
<li><a href="#">A Website #3</a></li>
<li><a href="#">A Website #4</a></li>
<li><a href="#">A Link #3</a></li>
<li><a href="#">A Link #4</a></li>
</ul>
<ul class="the_menu" id="menu3">
<li><a href="#">A Website #1</a></li>
<li><a href="#">A Website #2</a></li>
<li><a href="#">A Link #1</a></li>
<li><a href="#">A Link #2</a></li>
<li><a href="#">A Website #3</a></li>
<li><a href="#">A Website #4</a></li>
<li><a href="#">A Link #3</a></li>
<li><a href="#">A Link #4</a></li>
</ul>
<div class="clear"></div>
</div>
Работает нормально, если вы берете третий тег ul и якорь, но как только добавляется третий тег, он переключается слишком много раз.
Вот CSS
ul, li {
margin:0;
padding:0;
list-style:none;
}
div#menus {
position: relative;
background-color: #302f2f;
}
a.menu_button {
display: inline-block;
margin-right: -4px;
margin-bottom: 0px;
}
.menu_button img {
border:1px solid #1c1c1c;
display: block;
}
.the_menu {
display:none;
width:1000px;
}
.the_menu li {
}
.the_menu li a {
color:#FFFFFF;
text-decoration:none;
padding:10px;
display:block;
float:left;
}
.the_menu li a:hover {
padding:10px;
font-weight:bold;
color: #F00880;
}
.clear {
clear: both;
}
#home {
background: url(button_sprite.png);
background-position: 0px 0px;
width:125px;
height:30px;
float:left;
}
#aboutus {
background: url(button_sprite.png);
background-position: -126px 0px;
width:125px;
height:30px;
float:left;
}
#admissions {
background: url(button_sprite.png);
background-position: -252px 0px;
width:125px;
height:30px;
float:left;
}
РЕДАКТИРОВАТЬ: Когда другой href нажимается, когда один вниз, я хочу, чтобы активный скользнул сначала вверх, а затем новый, чтобы скользить вниз.