Я использую Twitter Bootstrap и я замечаю , что JQuery show()
или fadeIn()
не делает DOM элемент , отмеченный класс hidden
появляется , поскольку функции JQuery только удалить display: none
спецификацию. Тем не менее, по- visibility
прежнему установлено значение hidden
.
Интересно, как лучше всего обойти это?
- Удалите
hidden
класс элемента - Измените свойство видимости
- Перезаписать скрытый класс в моем собственном CSS
В частности, я хочу знать, лучше ли исправить это с помощью jQuery или css и почему.
jquery
twitter-bootstrap
Лим Х.
источник
источник
visibility: hidden
от начальной загрузки.Ответы:
Класс css, который вы ищете, - это
.collapse
. Это устанавливает элемент вdisplay: none;
Так что использование
$('#myelement').show()
будет работать правильно.ОБНОВЛЕНИЕ: Bootstrap v3.3.6 обновил .collapse до:
.collapse { display: none; }
источник
.slideDown()
,.fadeIn()
и т.д..hidden
в Bootstrap для вещей вы никогда не будет выводиться..collapse
Теперь также устанавливаетсяvisibility: hidden;
Это приведет к исчезновению вашего невидимого элемента и удалению класса
$('#element.hidden').css('visibility','visible').hide().fadeIn().removeClass('hidden');
http://jsfiddle.net/7qxVL/
Если вам действительно не нужно, чтобы элемент был невидимым (т.е. занимал место), то вы можете захотеть переопределить .hidden (в вашем локальном CSS не меняйте источник начальной загрузки или, что еще лучше, в вашем локальном LESS-файле).
источник
.hidden
элементы, которые хотите отображать с помощью javascript..collapse
Вместо этого используйте .Предупреждение:
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 для применения только display: none, - это
.navbar { display: none; }
источник
.collapse('hide')
и.collapse('show')
вместо них. Вы можете установить начальную видимость прямо в HTML через классcollapse
(скрыть) илиcollapse in
(показать). См. Getbootstrap.com/javascript/#collapse .У меня такая же проблема. Я использовал этот патч:
$(function() { $('.hidden').hide().removeClass('hidden'); });
Затем у меня возникла другая проблема, поскольку мое приложение генерирует новые элементы и добавляет / добавляет их. Что я наконец сделал, так это после генерации нового элемента:
var newEl = ...; $(newEl).find('.hidden').hide().removeClass('hidden');
источник
Для меня это было потому, что bootstrap использует
!important
хак как для скрытия, так и для скрытого класса.Таким образом, вы не можете использовать
show()
методы etc, предоставляемые с jquery. Вместо этого вам нужно перезаписать еще более ужасный код, перезаписав взломанный код.$('#myelement').attr('style', 'display: block !important');
! important - это крайний вариант, и его действительно не следует использовать в базовой библиотеке, такой как bootstrap.
источник
Это работает, но я попробую первый ответ и поменяю классы на
.collapse
..toggleClass('hidden')
источник