JQuery:切换触发切换链接

时间:2012-12-17 06:11:13

标签: javascript jquery toggle

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

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

有人知道我做错了吗?

由于

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

1 个答案:

答案 0 :(得分: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])只找到立即兄弟匹配选择器。 <ul> 立即 -符号<span> 的兄弟(<span> +符号位于两者之间,因此您必须使用.prevAll([selector])