Question

la semaine          

DKK

    " id = " radio2 " valeur = " 75 " / >     

J'ai un tas de ces entrées div générées par la boucle while donc je veux y parvenir: quand on clique sur l'entrée je veux que l'image de fond de l'entrée div change, mais si je choisis une autre radio dans une autre entrée div .. I 'aimerais que tous les changements précédents (tels que le changement de fond précédent) disparaissent et changent le fond de la division actuelle .. voici ce que j'ai essayé de faire peut-être que vous pouvez aider .. voici jQuery ci-dessous

$("input").click(function() {

             $(this).parent("div").toggle(function() {
             $(this).parent("div").css("background", "url(images/div_bg_hover.png)");
             }, function() {
             $(this).parent("div").css("background", "url(images/div_bg.png)");

             });

Quelque chose ne fonctionne pas bien .. Je veux dire que le code inst 'fonctionne pas du tout .. quelqu'un peut-il m'aider? merci

J'ai essayé ceci:

$("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").addClass("highlight");
                     }
                     else {
                         $(this).parent("div").removeClass("highlight");
                     }
                 });
             });

ET

$("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").css("background", "url(images/div_bg_hover.png)");
                     }
                     else {
                         $(this).parent("div").css("background", "url(images/div_bg.png)");
                     }
                 });
             });

pour une raison quelconque, il ne fonctionne pas du tout et ne change pas l'arrière-plan. Peut-être qu'il doit faire quelque chose avec le code ci-dessus, voici le script complet:

 <script type="text/javascript">

         $(document).ready(function() {

             $(".left_navigation a:last").toggleClass('bolder');


             $("input").each(function() {
                 var element_value = $(this).val();
                 $(this).prev("p").append(" " + element_value + ",-");
             });


             $("input").click(function() {
                 $("input").each(function() {
                     if (this.checked) {
                         $(this).parent("div").addClass("highlight");
                     }
                     else {
                         $(this).parent("div").removeClass("highlight");
                     }
                 });
             });




         });

</script>
Était-ce utile?

La solution

Le premier problème immédiat que je vois est qu'il manque à votre jQuery un }); à la fin, à moins que vous n'ayez simplement oublié de le coller ici. Cela l'empêcherait de faire autre chose que de jeter une erreur ...

Ceci est une version simplifiée de ce que vous avez déjà essayé. Cela pourrait au moins faciliter un peu le débogage.

<script type="text/javascript">
$(document).ready(function(){
    $("input").click( function() { 
         $("input").parent("div").removeClass("highlight");
         $(this).parent("div").addClass("highlight");
      });
  });
</script>

Bien que, je ne vois manifestement rien de mal à ce que vous avez déjà essayé, ce qui me fait me demander si $ ("input") correspond à ce que vous pensez. Je voudrais probablement au moins alerter certaines choses dans votre fonction de clic pour la vérification de la santé mentale. En fait, j'ai constaté à quelques reprises que mon $ (document) .ready était en train de se déclencher avant que je pensais que c'était avant que mes entrées ne soient prêtes à cause de mon framework ...

Autres conseils

Il existe plusieurs problèmes:

  • Vous utilisez les Basculer et la fonction Basculer est:
  

Si elles sont affichées, cette option les rend   caché (en utilisant la méthode hide). Si   ils sont cachés, bascule les fait   montré (en utilisant la méthode show).

Vous devriez demander si la radio est cochée

  • Vous devriez appeler chaque fonction pour changer les autres valeurs radio div

  • Vous devriez appeler la fonction $ (document) .ready ()

Exemple ( Attention: Javascript n'est pas ma meilleure arme ):

<script>
$(document).ready(function(){
    $("input").click( function() { 
         $("input").each(function() { 
             if (this.checked) {
                $(this).parent("div").css("background-color", "green") }
             else {
                $(this).parent("div").css("background-color", "red")}
          });
      });
  });
</script>

Remarque: j'ai utilisé la couleur de fond pour améliorer les tests, mais votre utilisation de l'arrière-plan est bonne.

vous devrez peut-être utiliser "background-image" au lieu de "background" pour définir les images.

edit: je pensais que j’avais eu des problèmes avec la propriété css 'background' dans jQuery auparavant, mais après l’avoir juste testée sur différents navigateurs, il me semble que je me suis trompé ou que cela a été corrigé dans les versions de jQuery depuis que je l’utilise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top