jQuery:show()不断添加display:block

时间:2010-10-21 15:55:05

标签: jquery

我现在有一个小问题,已经变成了一个溃烂的伤口。

我重新创建了Google营业时间,用于设置公司开放的一周中的哪些小时,或者当天是否关闭。现在,如果它们关闭,用户可以选择一个复选框和DIV隐藏的时间。现在我正在使用.show().hide()

现在,让我们假设用户在第一天关闭并决定“全部应用”到一周的剩余时间。我循环并关闭剩余的6天。但是,如果用户在一周中间修改了某一天,则.show().hide()函数会自动添加"display: block",这会使循环变得混乱。

为什么jQuery在最初从未出现时会添加这种样式,并且在我应用.show().hide()之前是否有一种在循环中删除它的简洁方法?

5 个答案:

答案 0 :(得分:4)

如果您对show()和hide()的效果不满意,请使用jQuery的addClass()和removeClass(),并附加一个类来更改可见性,例如。

答案 1 :(得分:3)

http://api.jquery.com/show/

  

将显示匹配的元素   马上,没有动画。这个   大致相当于打电话   .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","");

这只是从显示中清除“无”,你的样式表应该从那里接管。