0

我正在尝试制作一个下拉菜单,并希望所有其他打开的菜单在出现其他菜单时删除一个类。问题是,您必须在之前单击的菜单上单击两次才能再次打开它:

$(document).ready(function(){
$('li.dropdown').click(function(){
    //$('.dropdownmenu').hide() ;
    $('.dropdownmenu').not('ul', this).removeClass('opened');
    if($(' ul', this).hasClass('opened'))
    {
        $(' ul', this).removeClass('opened');
        $(' ul', this).hide();
    }
    else
    {
        $(' ul', this).addClass('opened') ;
        $(' ul', this).show() ;
    }

})
})

这里是在 JSFiddle 中,点击 Item 文本可以弹出菜单,如果你打开和关闭几个问题就会变得很明显。如果您知道更好的方法来做我想要实现的目标,请告诉我!

是的,如果你愿意,你可以:P 她是我最喜欢的哈哈


此外,如果再次单击菜单项,菜单应该会关闭。

4

2 回答 2

1

当我需要这样做时,我通常会从所有内容中删除该类,而不用担心应该保留它的类,与隐藏元素相同。

然后只需将必要的类添加到单击的元素并显示它。

如果您确实不需要,请执行以下操作:

var ul = $(this).closest('ul');

然后使用变量 in not()

你实际上把事情颠倒了——你正在寻找一个 li 里面的 ul ,这与它应该是相反的。

于 2012-09-14T06:34:32.307 回答
0

谢谢@Ariel,你的想法没有马上奏效,但我做到了:

var innerul = $('ul', this);

相反,哪个有效。

于 2012-09-14T06:39:59.107 回答