Допустим, я создаю такой элемент HTML,
<div id="my-div" class="hidden">Hello, TB3</div>
<div id="my-div" class="hide">Hello, TB4</div>
<div id="my-div" class="d-none">Hello, TB4</div>
Как я могу показать и скрыть этот элемент HTML из jQuery / Javascript.
JavaScript:
$(function(){
$("#my-div").show();
});
Результат: (с любым из них).
Я хотел бы, чтобы элементы выше были скрыты.
Какой самый простой способ скрыть элемент с помощью Bootstrap и показать его с помощью jQuery?
javascript
jquery
html
css
twitter-bootstrap
psylosss
источник
источник
Ответы:
Правильный ответ
Bootstrap 4.x
Bootstrap 4.x использует новый
.d-none
класс . Вместо использования либо.hidden
, либо.hide
если вы используете Bootstrap 4.x используйте.d-none
.$("#myId").removeClass('d-none');
$("#myId").addClass('d-none');
$("#myId").toggleClass('d-none');
(благодаря комментарию Fangming)
Bootstrap 3.x
Во-первых, не используйте
.hide
! Использование.hidden
. Как уже говорили другие,.hide
не рекомендуется,Во-вторых, используйте .Query 's .toggleClass () , .addClass () и .removeClass ()
$("#myId").removeClass('hidden');
$("#myId").addClass('hidden');
$("#myId").toggleClass('hidden');
Не используйте класс css
.show
, у него очень маленький вариант использования. Определенияshow
,hidden
иinvisible
находятся в документации .источник
fadeIn()
). Поэтому используйте классcollapse
вместоhidden
. И тогда, конечно , нет необходимости в использованииremoveClass
,addClass
и т.д..hidden-xs-up
. v4-alpha.getbootstrap.com/layout/responsive-utilities/… Существует такжеhidden
атрибут HTML5. v4-alpha.getbootstrap.com/content/reboot/….hide()
не является.hide
классом начальной загрузки . Метод jQuery работает нормально, но это не путь начальной загрузки. Библиотеки начальной загрузки зависят от включения в элемент класса .hidden, чтобы определить, что его там нет. JQuery не добавляет этого - если вы не взломаете это, как здесь: stackoverflow.com/a/27439371/124486 , в этом случае вы можете сломать другие специфичные для jQuery вещи.Просто:
Или, если вы хотите, чтобы класс все еще был там:
источник
Используйте загрузчик .collapse вместо .hidden
Позже в JQuery вы можете использовать .show () или .hide () для управления им
источник
Это решение устарело. Используйте решение с наибольшим количеством голосов.
hide
Класс полезен , чтобы сохранить содержание скрытую на странице загрузки.Мое решение этого во время инициализации, переключиться на JQuery's Hide:
Тогда
show()
иhide()
должен функционировать как обычно.источник
Другой способ справиться с этим раздражением - создать собственный CSS-класс, который не устанавливает! Важное в конце правила, например так:
и использовал вот так:
и теперь jQuery скрывается работает
источник
.hidden { display: none !important; visibility: hidden !important; }
Метод @ dustin-graham обрисовал в общих чертах, как я делаю это также. Помните также, что загрузчик 3 теперь использует «скрытый» вместо «скрыть» согласно их документации на getbootstrap . Так что я бы сделал что-то вроде этого:
Тогда всякий раз, когда используются jQuery
show()
иhide()
методы, не будет никакого конфликта.источник
hidden
класс, а затем попытаться сделатьshow()
в jQuery, и ничего не произойдет. Ваше решение исправляет это так легко, и я не думал об этом.Инициируйте элемент следующим образом:
А затем используйте событие, которое вы хотите показать, как таковое:
Я считаю, что самый простой путь.
источник
HTML:
Javascript:
источник
Мне нравится использовать toggleClass:
источник
switch
совершенно не нужно.// вам даже не нужно устанавливать
#my-div
.hide
nor!important
, просто вставьте / повторите переключатель в функции события.источник
Недавно столкнулся с этим при обновлении с 2.3 до 3.1; наша анимация jQuery ( slideDown ) сломалась, потому что мы скрывали элементы в шаблоне страницы. Мы пошли по пути создания версий классов Bootstrap с пространством имен, которые теперь несут ужасное правило ! Important.
источник
Ответ Разза хорош, если вы готовы переписать то, что сделали.
Был в той же беде и работал со следующим:
Выбросьте его, когда Bootstrap поставляется с решением этой проблемы.
источник
.removeClass()
или.addClass()
?.removeClass()
работает на съемочной площадке? Не могли бы вы просто назвать$(this).removeClass('show')
В начальной загрузке 4 вы можете использовать
d-none
класс, чтобы полностью скрыть элемент. https://getbootstrap.com/docs/4.0/utilities/display/источник
Обновление : теперь я использую
.collapse
и$('.collapse').show()
.Для Bootstrap 4 Альфа 6
Для Bootstrap 4 вы должны использовать
.hidden-xs-up
.https://v4-alpha.getbootstrap.com/layout/responsive-utilities/#available-classes
Существует также
hidden
атрибут HTML5.https://v4-alpha.getbootstrap.com/content/reboot/#html5-hidden-attribute
Есть также,
.invisible
что влияет на макет.https://v4-alpha.getbootstrap.com/utilities/invisible-content/
источник
hide и hidden являются устаревшими и впоследствии удаляются, более не существуют в новых версиях. Вы можете использовать классы d-none / d-sm-none / invisible и т.д. в зависимости от ваших потребностей. Вероятная причина, по которой они были удалены, заключается в том, что hidden / hide немного запутан в контексте CSS. В CSS скрыть (скрытый) используется для видимости, а не для отображения. видимость и отображение разные вещи.
Если вам нужен класс для видимости: скрытый, то вам нужен невидимый класс из утилит видимости.
Проверьте ниже и видимость и отображение утилит:
https://getbootstrap.com/docs/4.1/utilities/visibility/
https://getbootstrap.com/docs/4.1/utilities/display/
источник
Используйте следующий фрагмент для Bootstrap 4, который расширяет jQuery:
Включите файл после того, как jQuery был включен.
Используйте это используя синтаксис
$ () HideShow ( 'скрыть').
$ () HideShow ( 'шоу').
надеюсь, вы, ребята, найдете это полезным. :-)
источник
Bootstrap, JQuery, пространства имен ... Что не так с простым:
Вы можете создать небольшую вспомогательную функцию, совместимую с KISS:
источник
Основываясь на вышеупомянутых ответах, я только что добавил свои собственные функции, и это далее не конфликтует с доступными функциями jquery, такими как .hide (), .show (), .toggle (). Надеюсь, поможет.
источник
Я решил свою проблему, отредактировав файл Bootstrap CSS, см. Их документацию:
.скрывать:
.hidden - это то, что мы предполагаем использовать сейчас, но на самом деле это:
JQuery "fadeIn" не будет работать из-за "видимости".
Итак, для последней Bootstrap .hide больше не используется, но все еще находится в файле min.css. поэтому я оставил .hidden как есть и просто удалил "! Important" из класса ".hide" (который в любом случае считается устаревшим). но вы также можете просто переопределить его в своем собственном CSS, я просто хотел, чтобы все мои приложения работали одинаково, поэтому я изменил файл Bootstrap CSS.
И теперь jQuery "fadeIn ()" работает.
Причина, по которой я это сделал по сравнению с приведенными выше предложениями, заключается в том, что когда вы удаляете «Удалить класс» («. Hide»), объект сразу отображается, и вы пропускаете анимацию :)
Я надеюсь, что это помогло другим.
источник
☀️ Правильный ответ
В Bootstrap 4 вы скрываете элемент:
🛑 Тогда, конечно, вы можете буквально показать это с:
If Но если вы сделаете это семантическим способом, перенеся ответственность с Bootstrap на jQuery, то вы сможете использовать другие тонкости jQuery, такие как fading:
источник
Twitter Bootstrap предоставляет классы для переключения контента, см. Https://github.com/twbs/bootstrap/blob/3ee5542c990817324f0a07b97d01d1fe206fd8d6/less/utilities.less .
Я совершенно новичок в jQuery, и после прочтения их документов я пришел к другому решению, чтобы объединить Twitter Bootstrap + jQuery.
Во-первых, решение «скрыть» и «показать» элемент (класс wsis-collapse) при нажатии на другой элемент (класс wsis-toggle) заключается в использовании .toggle .
Вы уже скрыли элемент
.wsis-collapse
с помощью класса Twitter Bootstrap (V3).hidden
:Когда вы нажимаете
.wsis-toggle
, jQuery добавляет встроенный стиль:Из-за
!important
встроенной загрузки Twitter этот встроенный стиль не действует, поэтому нам нужно удалить.hidden
класс, но я не буду рекомендовать.removeClass
это! Потому что, когда jQuery снова собирается что-то скрывать, он также добавляет встроенный стиль:Это не то же самое, что класс .hidden Twitter Bootstrap, который также оптимизирован для AT (средства чтения с экрана). Итак, если мы хотим показать скрытый div, нам нужно избавиться от
.hidden
класса Twitter Bootstrap, чтобы мы избавились от важных утверждений, но если мы снова его скрываем, мы хотим.hidden
вернуть класс снова! Мы можем использовать [.toggleClass] [3] для этого.Таким образом, вы продолжаете использовать скрытый класс каждый раз, когда содержимое скрыто.
.show
Класс ТБ фактически такой же , как встроенный стиль в JQuery, как'display: block'
. Но если.show
класс в какой-то момент будет другим, тогда вы просто добавите и этот класс:источник