Disons que je crée un élément HTML comme celui-ci,
<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>
Comment pourrais-je montrer et cacher cet élément HTML de jQuery / Javascript.
JavaScript:
$(function(){
$("#my-div").show();
});
Résultat: (avec l'un d'eux).
J'aimerais que les éléments ci-dessus soient cachés.
Quel est le moyen le plus simple de masquer un élément à l'aide de Bootstrap et de l'afficher à l'aide de jQuery?
javascript
jquery
html
css
twitter-bootstrap
psylosses
la source
la source
Réponses:
La bonne réponse
Bootstrap 4.x
Bootstrap 4.x utilise la nouvelle
.d-none
classe . Au lieu d'utiliser l' un.hidden
ou l' autre , ou.hide
si vous utilisez Bootstrap 4.x, utilisez.d-none
.$("#myId").removeClass('d-none');
$("#myId").addClass('d-none');
$("#myId").toggleClass('d-none');
(grâce au commentaire de Fangming)
Bootstrap 3.x
Tout d'abord, ne l'utilisez pas
.hide
! Utilisez.hidden
. Comme d'autres l'ont dit,.hide
est obsolète,Deuxièmement, utilisez .toggleClass () , .addClass () et .removeClass () de jQuery
$("#myId").removeClass('hidden');
$("#myId").addClass('hidden');
$("#myId").toggleClass('hidden');
N'utilisez pas la classe css
.show
, elle a un très petit cas d'utilisation. Les définitions deshow
,hidden
etinvisible
sont dans les documents .la source
fadeIn()
). Par conséquent, utilisez la classecollapse
au lieu dehidden
. Et puis bien sûr il n'y a pas besoin d'utiliserremoveClass
,addClass
etc..hidden-xs-up
. v4-alpha.getbootstrap.com/layout/responsive-utilities/… Il existe également unhidden
attribut HTML5. v4-alpha.getbootstrap.com/content/reboot/….hide()
n'est pas la.hide
classe de bootstrap . La méthode jQuery fonctionne bien, mais ce n'est pas la méthode du bootstrap. Les bibliothèques d'amorçage dépendent de l'inclusion de la classe .hidden sur l'élément pour déterminer qu'il n'est pas là. jQuery n'ajoute pas cela - sauf si vous le piratez comme ici: stackoverflow.com/a/27439371/124486 , auquel cas vous pourriez casser d'autres choses spécifiques à jQuery.Simplement:
Ou si vous voulez que la classe soit toujours là:
la source
Utilisez bootstrap .collapse au lieu de .hidden
Plus tard dans JQuery, vous pouvez utiliser .show () ou .hide () pour le manipuler
la source
Cette solution est déconseillée. Utilisez la solution la plus votée.
La
hide
classe est utile pour garder le contenu caché lors du chargement de la page.Ma solution à cela est lors de l'initialisation, passez à masquer jquery:
Ensuite,
show()
ethide()
devrait fonctionner normalement.la source
Une autre façon de résoudre ce problème est de créer votre propre classe CSS qui ne définit pas le! Important à la fin de la règle, comme ceci:
et utilisé comme ça:
et maintenant jQuery cache des travaux
la source
.hidden { display: none !important; visibility: hidden !important; }
La méthode @ dustin-graham décrite est la façon dont je le fais aussi. Rappelez-vous également que bootstrap 3 utilise désormais "caché" au lieu de "masquer" selon leur documentation sur getbootstrap . Je ferais donc quelque chose comme ceci:
Ensuite, chaque fois que vous utilisez jQuery
show()
et leshide()
méthodes, il n'y aura pas de conflit.la source
hidden
classe, puis j'essaierais de le faireshow()
dans jQuery, et rien ne se passerait. Votre solution résout ce problème si facilement et je n'y ai pas pensé.Initiez l'élément avec comme tel:
Et puis, utilisez l'événement que vous souhaitez afficher, comme tel:
La façon la plus simple d'aller, je crois.
la source
HTML:
Javascript:
la source
J'aime utiliser le toggleClass:
la source
switch
n'est absolument pas nécessaire.// vous n'avez même pas besoin de définir le
#my-div
.hide
ni!important
, il suffit de coller / répéter la bascule dans la fonction d'événement.la source
J'ai récemment rencontré ce problème lors de la mise à niveau de la version 2.3 vers la version 3.1; nos animations jQuery ( slideDown ) se sont cassées parce que nous mettions masquer les éléments dans le modèle de page. Nous avons opté pour la création de versions à espacement des noms des classes Bootstrap qui portent désormais la règle laide !
la source
La réponse de Razz est bonne si vous êtes prêt à réécrire ce que vous avez fait.
Était dans le même problème et a travaillé avec les éléments suivants:
Jetez-le lorsque Bootstrap est livré avec un correctif pour ce problème.
la source
.removeClass()
ou.addClass()
?.removeClass()
déjà sur l'ensemble? Ne pourriez-vous pas simplement appeler$(this).removeClass('show')
Dans bootstrap 4, vous pouvez utiliser la
d-none
classe pour masquer complètement un élément. https://getbootstrap.com/docs/4.0/utilities/display/la source
Mise à jour : Désormais, j'utilise
.collapse
et$('.collapse').show()
.Pour Bootstrap 4 Alpha 6
Pour Bootstrap 4, vous devez utiliser
.hidden-xs-up
.https://v4-alpha.getbootstrap.com/layout/responsive-utilities/#available-classes
Il existe également un
hidden
attribut HTML5.https://v4-alpha.getbootstrap.com/content/reboot/#html5-hidden-attribute
Il y a aussi
.invisible
ce qui affecte la mise en page.https://v4-alpha.getbootstrap.com/utilities/invisible-content/
la source
hide et hidden sont tous deux obsolètes et supprimés plus tard, n'existent plus dans les nouvelles versions. Vous pouvez utiliser les classes d-none / d-sm-none / invisible etc. en fonction de vos besoins. La raison probable de leur suppression est que caché / masqué est un peu déroutant dans le contexte CSS. En CSS, cacher (caché) est utilisé pour la visibilité, pas pour l'affichage. la visibilité et l'affichage sont des choses différentes.
Si vous avez besoin d'une classe de visibilité: cachée, vous avez besoin d'une classe invisible des utilitaires de visibilité.
Vérifiez ci-dessous les utilitaires de visibilité et d'affichage:
https://getbootstrap.com/docs/4.1/utilities/visibility/
https://getbootstrap.com/docs/4.1/utilities/display/
la source
Utilisez l'extrait de code suivant pour Bootstrap 4, qui étend jQuery:
Incluez le fichier une fois que jQuery a été inclus.
Utilisez-le en utilisant la syntaxe
$ (). hideShow ('hide');
$ (). hideShow ('show');
j'espère que vous les trouverez utiles. :-)
la source
Bootstrap, JQuery, namespaces ... Quel est le problème avec un simple:
Vous pouvez créer une petite fonction d'aide, compatible KISS:
la source
Sur la base des réponses ci-dessus, je viens d'ajouter mes propres fonctions et cela n'entre pas en conflit avec les fonctions jquery disponibles comme .hide (), .show (), .toggle (). J'espère que ça aide.
la source
J'ai résolu mon problème en éditant le fichier CSS Bootstrap, voir leur doc:
.cacher:
.hidden est ce que nous sommes censés utiliser maintenant, mais c'est en fait:
Le jQuery "fadeIn" ne fonctionnera pas à cause de la "visibilité".
Ainsi, pour le dernier Bootstrap, .hide n'est plus utilisé, mais il est toujours dans le fichier min.css. j'ai donc laissé .hidden AS IS et j'ai juste supprimé le "! important" de la classe ".hide" (qui est de toute façon obsolète). mais vous pouvez également le remplacer dans votre propre CSS, je voulais juste que toute mon application agisse de la même façon, j'ai donc changé le fichier CSS Bootstrap.
Et maintenant le jQuery "fadeIn ()" fonctionne.
La raison pour laquelle j'ai fait cela par rapport aux suggestions ci-dessus, c'est que lorsque vous "removeClass ('. Hide')", l'objet est immédiatement affiché et vous ignorez l'animation :)
J'espère que cela a aidé les autres.
la source
☀️ La réponse la plus juste
Dans Bootstrap 4, vous masquez l'élément:
🛑 Ensuite, bien sûr, vous pouvez littéralement le montrer avec:
💓 Mais si vous le faites de manière sémantique, en transférant la responsabilité de Bootstrap à jQuery, vous pouvez utiliser d'autres subtilités jQuery comme la décoloration:
la source
Twitter Bootstrap fournit des classes pour basculer le contenu, voir https://github.com/twbs/bootstrap/blob/3ee5542c990817324f0a07b97d01d1fe206fd8d6/less/utilities.less .
Je suis complètement nouveau sur jQuery, et après avoir lu leurs documents, je suis arrivé à une autre solution pour combiner Twitter Bootstrap + jQuery.
Tout d'abord, la solution pour «masquer» et «afficher» un élément (classe wsis-collapse) lorsque vous cliquez sur un autre élément (classe wsis-toggle), consiste à utiliser .toggle .
Vous avez déjà masqué l'élément
.wsis-collapse
en utilisant.hidden
également la classe Twitter Bootstrap (V3) :Lorsque vous cliquez sur
.wsis-toggle
, le jQuery ajoute un style en ligne:En raison de
!important
dans le Bootstrap Twitter, ce style en ligne n'a aucun effet, nous devons donc supprimer la.hidden
classe, mais je ne le recommanderai pas.removeClass
pour cela! Parce que lorsque jQuery va à nouveau cacher quelque chose, il ajoute également un style en ligne:Ce n'est pas la même chose que la classe .hidden de Twitter Bootstrap, qui est également optimisée pour AT (lecteurs d'écran). Donc, si nous voulons montrer le div caché, nous devons nous débarrasser de la
.hidden
classe de Twitter Bootstrap, donc nous nous débarrassons des déclarations importantes, mais si nous le cachons à nouveau, nous voulons.hidden
récupérer la classe! Nous pouvons utiliser [.toggleClass] [3] pour cela.De cette façon, vous continuez à utiliser la classe cachée chaque fois que le contenu est masqué.
La
.show
classe en TB est en fait la même que le style en ligne de jQuery, les deux'display: block'
. Mais si la.show
classe à un moment donné sera différente, vous ajoutez simplement cette classe également:la source