我现在有一个小问题,已经变成了一个溃烂的伤口。
我重新创建了Google营业时间,用于设置公司开放的一周中的哪些小时,或者当天是否关闭。现在,如果它们关闭,用户可以选择一个复选框和DIV隐藏的时间。现在我正在使用.show()
和.hide()
现在,让我们假设用户在第一天关闭并决定“全部应用”到一周的剩余时间。我循环并关闭剩余的6天。但是,如果用户在一周中间修改了某一天,则.show()
或.hide()
函数会自动添加"display: block"
,这会使循环变得混乱。
为什么jQuery在最初从未出现时会添加这种样式,并且在我应用.show()
或.hide()
之前是否有一种在循环中删除它的简洁方法?
答案 0 :(得分:4)
如果您对show()和hide()的效果不满意,请使用jQuery的addClass()和removeClass(),并附加一个类来更改可见性,例如。
答案 1 :(得分:3)
将显示匹配的元素 马上,没有动画。这个 大致相当于打电话
.css('display', 'block')
,除此之外 display属性恢复为 无论最初是什么。如果 element的显示值为inline, 然后是隐藏和显示,它将一次 再次以内联方式显示。
您是否设置了原始css显示属性?
答案 2 :(得分:3)
在未定义显示的元素上,在取消隐藏后,JQUERY会向元素添加显示块。
您可以在之后将其删除。
$("#myrow").show().removeAttr( 'style' )
这包括所有动态样式,因此请注意您是否依赖于此。
答案 3 :(得分:2)
Jquery使用'display:none'来隐藏()。我经常使用这个和show(),但我还没有遇到任何问题,可能因为display:block没有损害我的格式。
这是针对您的情况的快速补救措施
$("#mydiv").show().css("display","inline")
使用你想要的div设置而不是内联(虽然内联可能不适用于你,因为阻止不是。
答案 4 :(得分:0)
像Cyril Gupta和Jimmy Kane的回答一样,在隐藏的div上使用它:
$("#hiddenDiv").css("display","");
这只是从显示中清除“无”,你的样式表应该从那里接管。