0

我有一个使用切换的下拉菜单,并在单击 + 字符时触发(带有 .plusminus 类的元素)。当触发切换时,+ 符号也切换为“显示:无”,而 -(减号)符号切换为显示。

问题是单击减号不会触发下拉菜单再次切换 - 它仅在显示 + 号时才有效。

有谁知道我做错了什么?

谢谢

$('#menu li:has(ul)').each(function() {   
    $(this).append( "<span class='submenuplus plusminus'> &#43; </span>" );
    $(this).append( "<span class='submenuminus plusminus'> &#45; </span>" );   
});

$('#menu').on('click','.plusminus',function() {
    $(this).prev("ul").slideToggle("slow"),
    $('.submenuminus, .submenuplus').toggle();
});
4

1 回答 1

1

我为你清理了点击事件。尝试以下内容

$('#menu li:has(ul)').each(function() {   
    $(this).append( "<span class='submenuplus plusminus'> &#43; </span>" );
    $(this).append("<span class='submenuminus plusminus'> &#45; </span>");
    $(this).find('.submenuminus').hide();    
});

$('#menu .plusminus').click(function(){
    $(this).prevAll("ul").slideToggle("slow"),
    $(this).parent().find('.plusminus').toggle();
});​

让你绊倒的一个问题是使用

$(this).prev("ul")

这将返回符号的嵌套<ul>+但不返回-符号,因为.prev([selector])只找到与选择器匹配的直接兄弟。The<ul>不是符号的直接​​兄弟带有符号的 The介于两者之间)因此您必须改用.-<span> <span>+.prevAll([selector])

于 2012-12-17T06:27:26.357 回答