我有一个下拉菜单,它使用切换并在单击+字符时触发(带有.plusminus类的元素)。触发切换时,+符号也切换为“display:none”,而 - (减号)符号切换为显示。
问题是点击减号不会触发下拉菜单再次切换 - 它仅在显示+号时有效。
有人知道我做错了吗?
由于
$('#menu li:has(ul)').each(function() {
$(this).append( "<span class='submenuplus plusminus'> + </span>" );
$(this).append( "<span class='submenuminus plusminus'> - </span>" );
});
$('#menu').on('click','.plusminus',function() {
$(this).prev("ul").slideToggle("slow"),
$('.submenuminus, .submenuplus').toggle();
});
答案 0 :(得分:1)
我为你清理了点击事件。尝试类似下面的内容
$('#menu li:has(ul)').each(function() {
$(this).append( "<span class='submenuplus plusminus'> + </span>" );
$(this).append("<span class='submenuminus plusminus'> - </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])
。