Jquery-ul slidedown slideup

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>

我的菜单下拉列表有问题,不知道为什么。以下是HTML:

<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');      
                });  
            } 
        }       
});