afficher et masquer des éléments basés sur des données* attribut
Cela semble comme il devrait être facile pour JQuery à faire, mais cette fonction est de cacher l'ensemble de la forme... quelqu'un peut me pointer dans la bonne direction?
$('form')
.children()
.filter(function(){
return $(this).data('show', 'pro')
})
.show();
$('form')
.children()
.filter(function(){
return $(this).data('show', 'home')
})
.hide();
OriginalL'auteur Chris Sobolewski | 2012-01-27
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage 2 arguments à la
méthode, donnant ainsi à la place de la récupération de l'ancienne valeur.
Utiliser ce lieu:
Vous pouvez également le cache de votre sélecteur de performance (ou de l'utilisation
fin
).Scratch de mon dernier commentaire... j'ai juste jeté un minimaliste de violon, c'est de travailler, donc quelque chose d'autre se passe ici.
OriginalL'auteur Joseph Silber
Si les données-afficher les valeurs sont dans votre code HTML ou un ensemble comme des attributs de chaque objet, vous pouvez le faire entièrement avec un sélecteur:
Par manière d'explication:
form
évidemment sélectionne les éléments de formulaire>
sélectionne un enfant de l'objet de formulaire[data-show="pro"]
ne sélectionne que les enfants qui ont un attribut nommédata-show
qui est définie à la valeur de"pro"
.show()
appelle la méthode afficher sur les objets sélectionnésSi vos données-afficher les valeurs sont définies avec la
.data()
méthode jquery si la méthode précédente ne fonctionne pas, alors vous feriez mieux d'état comme un nom de classe plutôt qu'à une valeur de données que vous pouvez utiliser plus facilement dans un sélecteur. Si ces valeurs ont été définies comme les noms de classe au lieu de données, le code ressemblera à ceci:N'oubliez pas, vous pouvez avoir plusieurs noms de classe sur un objet et de l'état de l'objet qui est directement utilisé pour contrôler la présentation de l'objet (styles CSS, la visibilité, la mise en forme, etc..) est beaucoup, beaucoup mieux pour représenter la classe des noms plutôt que des données-xxx attributs, car il est beaucoup plus facile à utiliser dans les sélecteurs de CSS ou jQuery opérations.
$("form [data-show='foo']").show()
? Cela semble beaucoup plus efficace.oui, si vous n'êtes pas à la recherche que pour les descendants directs (dont votre code d'origine a été), vous pouvez enlever le
>
, et comprend tous les descendants, et pas seulement les enfants directs.OriginalL'auteur jfriend00
pas tout à fait sûr de ce que vous essayez de faire du code.
d'accès "data" avec JQ, j'utilise:
où les données-XXX est l'attribut de la balise. Cela fonctionne dans tous les navigateurs de retour à la version IE7 que j'ai vu.
data
attributs qui sont à la source de code html. Il ne sélectionnez pas par l'ajout de données de jQuerydata
méthode!Selon leur site web, depuis JQuery 1.4 .de données() se penchera sur les attributs data -.
OriginalL'auteur circusdei