J'ai un div avec cette classe:
.news{
width:710px;
float:left;
border-bottom:1px #000000 solid;
font-weight:bold;
display:none;
}
Et je voudrais avec certaines méthodes jQuery supprimer cet affichage: aucun; (donc le div sera affiché) et ensuite l'ajouter à nouveau (donc le div sera ombré).
Comment puis-je le faire? À votre santé
$(".news").show()
? "donc la div sera ombragée" ... vous voulez dire qu'elle disparaîtra ??$(".news").show()
marche! Le même$(".news").hide()
!!! Merci;)$('.news').toggle();
Réponses:
Pour cacher le
div
ou
et pour montrer
div
:ou
la source
jQuery vous fournit:
Vous pouvez ensuite facilement afficher et masquer le ou les éléments.
la source
.show()
ne supprime ni ne supprimedisplay: none
, mais met à la placedisplay: block
ou eninline
fonction de l'élément, et il peut casser la mise en page si l'élément utilise undisplay
style inhabituel .element{display:none;}
dans votre css, mais dans votre js, utilisez égalementelement.hide()
en même temps. Cela permettra à lashow()
fonction de fonctionner.Alors, laissez-moi vous donner un exemple de code:
Le lien sera le déclencheur pour afficher le div lorsque vous cliquez dessus. Donc votre Javascript sera:
Il est presque toujours préférable de laisser jQuery gérer le style pour masquer et afficher les éléments.
Edit: Je vois que les gens ci-dessus recommandent d'utiliser
.show
et.hide
pour cela..toggle
vous permet de faire les deux avec un seul effet. Alors c'est cool.la source
toggle
fonction. Plusieurs fois, si vous devez cliquer sur quelque chose et l'afficher, vous souhaitez que la fonctionnalité le masque également.En JavaScript:
Dans jQuery:
la source
Utilisez la bascule pour afficher et masquer.
Vérifiez l'exemple de travail sur http://jsfiddle.net/jNqTa/
la source
.toggle()
c'est obsolète depuis jQuery 1.9.Je suggère d'ajouter une classe pour afficher / masquer les éléments:
puis utilisez .toggleClass () de jquery pour afficher / masquer l'élément:
la source
La seule façon de supprimer un "display: none" en ligne via le css-api de jQuery est de le réinitialiser avec la chaîne vide (
null
ne fonctionne PAS btw !!).Selon le document jQuery, c'est la manière générale de "supprimer" une propriété de style en ligne une fois définie.
$("#mydiv").css("display","");
ou
$("#mydiv").css({display:""});
devrait faire l'affaire correctement.
IMHO il y a une méthode manquante dans jQuery qui pourrait être appelée "unhide" ou "révéler" qui au lieu de simplement définir une autre propriété de style en ligne annule correctement la valeur d'affichage comme décrit ci-dessus. Ou peut-être
hide()
devrait stocker la valeur initiale en ligne etshow()
devrait restaurer cela ...la source
Les fonctions .show () et .hide () de jQuery sont probablement votre meilleur choix.
la source
Vous ne nous donnez pas beaucoup d'informations mais en général, cela pourrait être une solution:
la source
$(".news").show()
et$(".news").hide()
;)Pour une raison quelconque, la bascule ne fonctionnait pas pour moi et j'ai reçu l'erreur
uncaught type error toggle is not a function
lors de l'inspection de l'élément dans le navigateur. J'ai donc utilisé le code suivant et cela a commencé à fonctionner pour moi.Fichier de script jquery utilisé
jquery-2.1.3.min.js
.la source
Si vous avez beaucoup d'éléments que vous aimeriez
.hide()
ou.show()
, vous allez gaspiller beaucoup de ressources pour faire ce que vous voulez - même si vous utilisez.hide(0)
ou.show(0)
- le paramètre 0 est la durée de l'animation.Contrairement à Prototype.js
.hide()
et aux.show()
méthodes qui utilisaient uniquement pour manipuler l'attribut d'affichage de l'élément, l'implémentation de jQuery est plus complexe et déconseillée pour un grand nombre d'éléments.Dans ce cas, vous devriez probablement essayer
.css('display','none')
de cacher et.css('display','')
d'afficher.css('display','block')
doit être évité, en particulier si vous travaillez avec des éléments en ligne, des lignes de tableau (en fait des éléments de tableau), etc.la source
Considérant que le commentaire de lolesque est la meilleure réponse, vous pouvez ajouter un attribut ou une classe pour afficher / masquer des éléments avec des propriétés d'affichage qui diffèrent de ce qu'il a normalement, si votre site a besoin d'une compatibilité descendante, je suggérerais de créer une classe et de l'ajouter / de la supprimer pour afficher / afficher l'élément
Remplacez inline-block par votre méthode d'affichage préférée de votre choix et utilisez jquerys addclass https://api.jquery.com/addclass/ et removeclass https://api.jquery.com/removeclass/ au lieu de show / hide, si en arrière la compatibilité n'est pas un problème, vous pouvez utiliser des attributs comme celui-ci.
Et utilisez jquerys attr () http://api.jquery.com/attr/ pour afficher et masquer l'élément.
Quelle que soit la méthode que vous préférez, cela vous permet d'implémenter facilement des animations css3 lorsque vous affichez / masquez des éléments de cette façon
la source
Utiliser des
show()
ajoutsdisplay:block
à la place dedisplay:hide
qui pourrait casser des choses.Pour éviter cela, vous pouvez avoir une classe avec propriété
display:none
et basculer cette classe pour cet élément avectoggleClass()
.Aucune des réponses n'a mentionné cela.
la source