代码之家  ›  专栏  ›  技术社区  ›  dcolumbus

jquery:show()继续添加display:block

  •  4
  • dcolumbus  · 技术社区  · 15 年前

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

    我重新创建了谷歌的营业时间,用来设置一家公司在一周内的营业时间,或者是否在当天关闭。现在,如果它们被关闭,用户可以选择一个复选框并隐藏times div。现在我在用 .show() .hide()

    现在,假设一个用户关闭了第一天,并决定将“全部”应用于一周中的其余日子。我把剩下的6天循环结束。但是,如果用户在一周中修改了一天, 显示() HID() 函数自动添加 "display: block" 这会破坏循环。

    为什么jquery在最初从未存在时添加这种样式,并且在应用 显示() HID() ?

    5 回复  |  直到 15 年前
        1
  •  4
  •   ScottE    15 年前

    如果您对show()和hide()的效果不满意,可以使用jquery的addClass()和removeClass(),然后附加一个类来更改可见性。

        2
  •  3
  •   jcolebrand    15 年前

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

    将显示匹配的元素 立刻,没有动画。这个 大致相当于呼叫 .css('display', 'block') 除了 显示属性还原为 不管最初是什么。如果一个 元素的显示值为inline, 然后隐藏并显示,它将 再次以内联方式显示。

    是否设置了原始的CSS显示属性?

        3
  •  3
  •   Jimmy Kane    12 年前

    对于尚未定义显示的元素,jquery在取消隐藏后将向元素添加显示块。

    以后你可以把它取下来。

    $("#myrow").show().removeAttr( 'style' )
    

    这包括所有的动态造型,所以请注意,如果你依赖这一点。

        4
  •  2
  •   Cyril Gupta    15 年前

    jquery使用'display:none'来隐藏()。我经常使用这个和show(),但我还没有遇到任何问题,可能是因为display:block没有影响我的格式设置。

    这是对你的情况的快速补救方法

    $("#mydiv").show().css("display","inline")
    

    使用所需的DIV设置而不是inline(而inline可能对您有用,因为块不是。

        5
  •  0
  •   jsphstls    10 年前

    就像西里尔·古普塔和吉米·凯恩的答案一样,在隐藏的分区上使用这个:

    $("#hiddenDiv").css("display","");
    

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