jQuery show () для Twitter Bootstrap CSS Class hidden
Я использую Twitter Bootstrap и я замечаю, что jQuery show()
или fadeIn()
не делает элемент DOM помеченным классом hidden
появляются, потому что функции jQuery удаляют только display: none
спецификация. Тем не менее,visibility
установить hidden
.
интересно, каков наилучший способ обойти это?
- удалить
hidden
класс на элементе - изменить свойство visibility
- перезаписать скрыта класс в моем собственном css
в частности, я хочу знать, лучше ли исправить это с помощью jQuery или css и почему.
6 ответов:
класс css, который вы ищете, это
.collapse
. Это устанавливает элемент вdisplay: none;
так что с помощью
$('#myelement').show()
будет работать должным образом.обновление : Начальной загрузки В3.3.6 обновил .свернуть обратно в:
.collapse { display: none; }
Это будет исчезать ваш невидимый элемент и удалить класс
$('#element.hidden').css('visibility','visible').hide().fadeIn().removeClass('hidden');
Если вам действительно не нужно, чтобы элемент был невидимым (т. е. занимал пространство), вы можете переопределить его .скрытый (в вашем локальном css, не меняйте источник начальной загрузки или даже лучше, в вашем локальном файле LESS).
предупреждение:
bootstrap 3.3.0 только что изменился .свернуть в:
.collapse { display: none; visibility: hidden; }
что является критическим изменением для jQuery.show () мне пришлось вернуться к inlining:
<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, чтобы применить только "display:none" - это
.navbar { display: none; }
у меня была та же проблема. Я использовал этот патч:
$(function() { $('.hidden').hide().removeClass('hidden'); });
тогда у меня была другая проблема, так как мое приложение генерирует новые элементы и добавляет/добавляет их. То, что я, наконец, сделал, это после генерации нового элемента, который я делаю:
var newEl = ...; $(newEl).find('.hidden').hide().removeClass('hidden');
это работает, но я собираюсь попробовать первый ответ и менять классы
.collapse
..toggleClass('hidden')
для меня это было потому, что bootstrap использует
!important
взломать как класс скрыть и скрытый.Так что вы не можете использовать
show()
методы etc, поставляемые с jquery. Вместо этого вы должны перезаписать еще более ужасный код, перезаписывая хакерский код.$('#myelement').attr('style', 'display: block !important');
!важным является крайний вариант и не должен использоваться в основной библиотеке, как загрузочный.