Jquery-ul slidedown slideup
我的菜单下拉列表有问题,不知道为什么。以下是HTML:Jquery-ul slidedown slideup,jquery,html,slidedown,slideup,Jquery,Html,Slidedown,Slideup,我的菜单下拉列表有问题,不知道为什么。以下是HTML: <ul> <li> <font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<ul>
<li>
<font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
<li>
<font style="font-size: 12px;"><a href="?id=2" class="links">Restaurante e Bar</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
</ul>
这里的主要问题是当打开的一个被点击关闭时,它会关闭并打开。
错误在这里:if($(this).not(menu))。但我不知道为什么
<ul>
<li>
<font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
<li>
<font style="font-size: 12px;"><a href="?id=2" class="links">Restaurante e Bar</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
</ul>
致以最诚挚的问候可能会替换此代码:
<ul>
<li>
<font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
<li>
<font style="font-size: 12px;"><a href="?id=2" class="links">Restaurante e Bar</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
</ul>
if($(this).not(menu)){
menu.slideDown(function(){
thisimage.attr('src', 'imgs/UpArrow.gif');
});
}
为此:
<ul>
<li>
<font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
<li>
<font style="font-size: 12px;"><a href="?id=2" class="links">Restaurante e Bar</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
</ul>
menu.not(this).slideDown(function(){
thisimage.attr('src', 'imgs/UpArrow.gif');
});
解释:“获取一组元素,对其进行筛选,然后返回一组与选择器、引用或函数不匹配的新元素。在if语句中测试这组元素是毫无意义和无用的。jQuery元素集合基本上是一个奇特的数组,Javascript中的所有数组在转换为布尔值时都被认为是真的,即使它们是空的。好的,当您测试是否打开了任何子菜单时,您应该关闭它们,因此if语句
if($(this).not(menu))
和内部代码应该被删除
<ul>
<li>
<font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
<li>
<font style="font-size: 12px;"><a href="?id=2" class="links">Restaurante e Bar</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
</ul>
PS:从jQuery站点,.not()
方法返回一个jQuery对象,然后,若由于它而导致语句错误,那个么它总是为true
<ul>
<li>
<font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
<li>
<font style="font-size: 12px;"><a href="?id=2" class="links">Restaurante e Bar</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
</ul>
您应该做的是:测试菜单是否打开并将其存储到变量中,然后关闭所有打开的子菜单,如果打开的
为false,则打开菜单
<ul>
<li>
<font style="font-size: 12px;"><a href="?id=1" class="links">Quartos e Suites</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
<li>
<font style="font-size: 12px;"><a href="?id=2" class="links">Restaurante e Bar</a></font>
<img src="imgs/DownArrow.gif" class="arrowup" style="width:13px;height:13px">
<ul class="submenu">
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Presidencial</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Executiva</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Suite Junior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Superior</a></font></li>
<li><font style="font-size: 12px;"><a href="?id=1" class="links">Quarto Standart</a></font></li>
</ul>
</li>
</ul>
$('.arrowup').click(function(){
var menu = $(this).next('ul');
var thisimage = $(this);
//check if is any open and close
allmenu = $('.submenu:visible');
if(menu.is(':visible')){
}else{
if(allmenu.size() != 0){
allmenu.slideUp(function(){
$(this).prev('img').attr('src', 'imgs/DownArrow.gif');
menu.slideDown();
});
}else{
//open the one clicked
$(this).next('ul').slideDown(function(){
thisimage.attr('src', 'imgs/UpArrow.gif');
});
}
}
});