jQuery - Vérifier l'état actuel du bouton radio et de cacher div
QUESTION: Comment puis-je vérifier la valeur d'un bouton radio onload et si c'est d'une certaine valeur, effectuer une action basée sur qui? Référencé à la fin de mon code dans le si déclaration.
EXPLICATION PLUS APPROFONDIE
Donc je sais que le titre de ce qui pourrait sembler familier à d'autres questions, mais j'ai un peu plus impliqué et en essayant de voir la meilleure façon de l'aborder. Donc, dans ma fonction homepageDisplayHandleSelection()
je afficher/masquer les domaines sur la base de la sélection de boutons radio depuis l'intérieur de la .homepage_display
zone. Ensuite, j'utilise essentiellement la même fonctionnalité pour un autre groupe de boutons radio dans il appelle mainImageLinkHandleSelection
puis se cache/montre des zones en fonction de la sélection. Je peux passer entre les Static
et Slide
option, mais la vue initiale (si Slideshow
est sélectionné lorsque le chargement de la page), c'est qu'il est toujours à l'affiche le secondaire boutons radio mainImageLinkHandleSelection
et il n'est pas jusqu'à ce que je cliquez en dehors de la Slideshow
option et revenir à Static
qu'il corrige lui-même.
Donc, j'ai tenté de la résoudre (au bas de l'exemple de code) par la création de vérifier si la valeur du radio qui est vérifié, c'est slideshow
et, si oui, je cacher un div appelé main_link
(qui est également attaché à chacune des zones autour de la mainImageLinkHandleSelection
divs). Je sais que ma question a des tas de pièces, mais j'ai pensé que si quelqu'un pouvait aider, il faudrait être un génie là, quelque part 😉 Merci beaucoup pour toute aide!
jQuery(document).ready(function() {
//Homepage Settings - Homepage Display
//This function handles the radio clicks.
function homepageDisplayHandleSelection() {
var duration = 400;
jQuery('.homepage_display').hide(duration);
jQuery('.main_link').hide(duration);
if (this.value === "slideshow") {
jQuery('.homepage_display_slides').show(duration);
} else if (this.value === "static") {
jQuery('.homepage_display_static').show(duration);
}
}
//Attach a click handler to the radios
//and trigger the selected radio
jQuery('#section-of_homepage_display :radio')
.click(homepageDisplayHandleSelection)
.filter(':checked').trigger('click');
//Homepage Settings - Main Link Options
//This function handles the radio clicks.
function mainImageLinkHandleSelection() {
var duration = 400;
jQuery('.main_link').hide(duration);
if (this.value === "external_url") {
jQuery('.main_link_external').show(duration);
} else if (this.value === "wp_page") {
jQuery('.main_link_page').show(duration);
}
else if (this.value === "wp_post") {
jQuery('.main_link_post').show(duration);
}
else if (this.value === "wp_taxonomy") {
jQuery('.main_link_category').show(duration);
}
}
//Attach a click handler to the radios
//and trigger the selected radio
jQuery("#section-of_main_image_link_option :radio")
.click(mainImageLinkHandleSelection)
.filter(":checked").trigger("click");
//Make sure main image link option are hidden by default if slideshow option is selected
if (jQuery('#section-of_homepage_display :radio :checked').val() === 'slideshow') {
jQuery('.main_link').hide();
}
});
Fait sens pour le faire - merci, j'ai mis à jour.
OriginalL'auteur Zach | 2011-11-30
Vous devez vous connecter pour publier un commentaire.
Bien, je suis en supposant que chaque bouton radio a une valeur unique, et ils sont tous donné le même nom. Dans ce cas, ce que vous voulez, c'est le
:checked
sélecteur:Que vous obtenez la valeur actuellement sélectionnée bouton radio. Si vous avez déjà le
id
de la radio bouton que vous souhaitez vérifier, puis c'est aussi simple que:Plus précisément, puisque vous souhaitez vérifier sur le
slideshow
valeur, je crois que votreif
déclaration deviendra:MODIFIER: je vois votre problème maintenant. Le problème, c'est que vous masquez tous les
.main_link
éléments, ainsi que la.homepage_display
éléments. Mais lorsque vous cliquez sur la page d'accueil de sélection bouton radio, vous n'avez pas, alors allez à travers et ré-afficher la .main_link élément qui se traduit par l'yhlumberyardstraditional3[of_main_image_link_option]
groupe de boutons radio.Deux choses:
change
gestionnaire d'événement au lieu declick
. Cela permettra d'éviter la totalité de la séquence d'animation à partir inutilement en cours d'exécution lorsque déjà sélectionnée radio bouton est cliqué.change
gestionnaire d'événements de ces boutons radio.J'ai pris de l'avance une mise à jour de votre violon avec une preuve de concept. Le principal changement est comme suit:
J'ai aussi pris la liberté de généraliser le problème et rétréci le code 39 lignes. Check it out ici.
.main_link
domaines (ce qui est génial!) mais, si je décide de cliquer sur l'option Statique (ce qui serait alors ouvrir lamainImageLinkHandleSelection()
fonction, si un bouton radio est sélectionné commewp_pages
la zone d'entrée pour ce qui est caché par défaut, au lieu d'être montré - donc, un utilisateur a re-cliquez sur l'option sélectionnée pour qu'il s'affiche à la place de lamainImageLinkHandleSelection()
de la manipulation de ce. Voici ce que j'ai pour mon code complet pour le moment (la partie inférieure changé): jsfiddle.net/ebBPb Merci!Code HTML serait certainement aider
Salut @Bryan - sûr (désolé), ici ya aller jsfiddle.net/d5aYb de Sorte que vous voyez la
Slideshow
radio option est sélectionnée par défaut et il se cache quelque chose que leStatic
option spectacle, mais quand vous sélectionnezStatic
vous verrez quelques options de lien que l'on peut voir (dans une liste de radio) et même si leExternal Link
option n'est affichée (et devrait avoir une zone de texte correspondante) il n'est pas jusqu'à ce que vous sélectionnez à nouveau que la boîte s'affiche correctement. Merci!Il m'a fallu un certain temps pour réellement comprendre ce que le diable que vous essayez d'accomplir avec votre code HTML, mais j'ai finalement obtenu à travers elle. Je vais modifier ma réponse 🙂
Honnêtement, je ne sais pas quoi dire... une grande aide! Certainement quelque chose là-bas que j'ai besoin de la lire, car je peux écrire un peu de jQuery, mais évidemment pas très efficace 🙂 Takin ce à un niveau totalement nouveau pour moi, je ne peux pas vous remercier assez!
OriginalL'auteur rossipedia