J’ai plusieurs images et leur bouton radio respectif. En cliquant sur une image ou un bouton radio en leur div afficher et masquer respectifs affiche.
Mais je ne suis pas en mesure de réaliser:
En cliquant sur l’image le bouton radio respectif doit également sélectionner (une valeur true) lorsque le texte montre
Lorsque le texte se cache alors le bouton radio doit avoir une valeur fausse.
J’ai le code jusqu’à présent comme suit:
HTML
Flower 1
Flower is pink.
Flower 2
Flower is orange.
function Show_Div(Div_id) { if (false == $(Div_id).is(':visible')) { $(Div_id).show(250); } else { $(Div_id).hide(250); } }
La radio est l’enfant du précédent élément adjacent.
function Show_Div(Div_id) { if (!$(Div_id).is(':visible')) { $(Div_id).prev().children().prop('checked', true); $(Div_id).show(250); } else { $(Div_id).prev().children().prop('checked', false); $(Div_id).hide(250); } }
.prev()
sélectionne l’élément
qui précède l’image
.children()
sélectionne l’élément enfant (ie le bouton radio dans ce cas)
Si vous ajoutez des éléments supplémentaires à
vous devrez probablement append des sélecteurs supplémentaires (ex first (), filter ()) pour accéder à l’élément en entrée.
L’avantage de cette approche est …
Vous n’avez pas besoin d’append d’autres balises #id à votre code. Donc, si vous envisagez de répéter ce schéma, vous aurez un détail en moins à vous préoccuper.
Transmettez l’identifiant en tant que chaîne plutôt qu’en tant qu’object HTML. Utilisez les boutons radio Identifiant pour définir / annuler la définition de leurs valeurs. Pour définir un bouton radio en une seule fois et afficher le div correspondant, append une classe pour les boutons div et radio, masquer le div et définir la radio sur false sur la première ligne de la fonction Show_Div.
body { padding: 5px; } label { font-weight: bold; } input[type=text] { width: 20em } p { margin: 1em 0 0; }
Flower 1
Flower 2
Obtenez l’identifiant div en l’atsortingbuant comme titre à la radio correspondante et utilisez la bascule.
$("a").click(function(event) { $(this).find('input[type="radio"]').prop("checked", true); $('input[type="radio"]').change(); }); $('input[name="group"]').change(function() { var divId = $(this).attr('title'); $('#'+divId).toggle($(this).is(":checked")); });
Voici le code
Ajoutez un guillemet simple lorsque vous passez une chaîne à une fonction. Vous pouvez essayer comme:
Flower 1
function Show_Div(Div_id) { $('#'+Div_id).toggle(250); }
Essayez le code ci-dessous.
Flower 1
Flower 2