jQuery show()为Twitter Bootstrap隐藏了css类
我使用的是Twitter Bootstrap,我注意到jQuery show()
或者fadeIn()
并没有让DOM元素标记为hidden
类,因为jQuery函数只能删除display: none
规范。 但是, visibility
仍然是hidden
。
我想知道什么是最好的方法来解决这个问题?
- 删除元素上的
hidden
类 - 更改可见性属性
- 用我自己的CSS覆盖隐藏的类
特别是,我想知道是否解决这个与jQuery或CSS更好,为什么。
你正在寻找的CSS类是.collapse
。 这设置要display: none;
的元素display: none;
所以使用$('#myelement').show()
将正常工作。
更新: Bootstrap v3.3.6已更新.collapse回:
.collapse { display: none; }
这将淡化你的无形元素,并删除类
$('#element.hidden').css('visibility','visible').hide().fadeIn().removeClass('hidden');
如果你真的不需要元素是不可见的(即占用空间),你可能想重新定义.hidden(在你本地的css中,不要改变引导源,或者更好的,在你本地的LESS文件中)。
警告:
bootstrap 3.3.0刚更改.collapse为:
.collapse { display: none; visibility: hidden; }
这是jQuery.show()的重大改变我不得不恢复到内联:
<div class="alert alert-danger" style="display:none;" > </div>
继续使用jQuery如下:
$('.alert).html("Change a few things up and try submitting again.").show()
我只能在bootstrap 3.3.0中find适用于'display:none'的类
.navbar { display: none; }
我有同样的问题。 我使用这个补丁:
$(function() { $('.hidden').hide().removeClass('hidden'); });
然后我有另一个问题,因为我的应用程序生成新的元素,并追加/ prepend他们。 我最终做的是在产生了我所做的新元素之后:
var newEl = ...; $(newEl).find('.hidden').hide().removeClass('hidden');
对我来说,这是因为引导程序正在使用!important
隐藏和隐藏的!important
黑客。
所以你不能使用jQuery提供的show()
等方法。 相反,你必须覆盖更糟糕的代码覆盖hacky代码。
$('#myelement').attr('style', 'display: block !important');
!重要的是最后的手段选项,真的不应该在像bootstrap这样的核心库中使用。
这有效,但我会尝试第一个答案,并将类更改为.collapse
。
.toggleClass('hidden')