jQuery toggle
的其他效果,hide
正在运行,但addClass
功能在这里不起作用。 displyanone
类正在外面工作,但在jQuery函数中不起作用。这有什么不对?
$(document).on('click', '#menu', function() {
if($(this).is(':checked'))
$(this).parent().find('ul').slideDown('slow');
else
$(this).parent().find('ul').addClass('displaynone'); //Doesn't work
//$(this).parent().find('ul').hide('slow'); - works.
});
.displaynone {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="left col20">
<input type="checkbox" id="menu" name="menu[]" value="">
Checkbox
<ul class='displaynone'>
<input type="checkbox" class="menusub" name="menusub" value="">
Checkbox L2
</ul>
</label>
答案 0 :(得分:3)
.slideDown()
添加了内联样式属性display:block
,该属性会覆盖display:none
类中的displaynone
。在添加内联样式属性后添加类没有任何效果。
最简单的解决方法是将class='displaynone'
替换为style='display:none'
并使用.hide()
隐藏该元素。在这种情况下,仅使用内联样式属性。
$(document).on('click', '#menu', function() {
if($(this).is(':checked'))
$(this).parent().find('ul').slideDown('slow');
else
$(this).parent().find('ul').hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label class="left col20">
<input type="checkbox" id="menu" name="menu[]" value="">
Checkbox
<ul style='display:none'>
<li>
<label>
<input type="checkbox" class="menusub" name="menusub" value="">
Checkbox L2
</label>
</li>
</ul>
</label>