Question

Je suis vraiment coincé .. J'ai besoin d'un conseil urgent: voici mon html:

<!-- Beginning of ROW !-->
<div id="row1">
 <div id="entry">
  free
  <span>some text</span>
  <p>DKK</p>
  <input type="radio" name="red<% Response.Write(counter); %>" id="radio" value="0" />
 </div>

 <div id="entry">
  week
  <span></span>
  <p>DKK</p>
  <input type="radio" name="red<% Response.Write(counter); %>" id="radio2" value="75" />
 </div>
</div>
<!-- End of ROW !-->

<!-- Beginning of ROW !-->
<div id="row2">
 .... same as in row 1
</div>
<!-- End of ROW !-->

nth row ..

Voici Jquery:

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

Ce que j'essaie de faire. C’est quand je sélectionne une entrée radio que la division dans laquelle elle se trouve doit changer d’arrière-plan et que cela fonctionne parfaitement s’il n’ya qu’une rangée, mais par exemple si j’essaie de sélectionner la valeur dans la première rangée puis je sélectionne la valeur dans la deuxième rangée .. la div dans la deuxième rangée où l’entrée radio est située change d’arrière-plan comme il se doit, mais la div dans la première rangée s’inverse à l’arrière-plan bien que l’entrée soit vérifiée .. voici ce que je suis en essayant d'atteindre

 alt text

Et voici ce que je réalise:

 alt text

Était-ce utile?

La solution

Quel est le but de votre deuxième ligne de requête?

$("input").parent("div").css("background", "url(images/div_bg.png)");

Ceci va réinitialiser l’arrière-plan de toutes les "entrées". divs. Si je comprends bien votre objectif, je pense que vous voulez:

$(this).parent("div").siblings("div.entry").css("background", "url(images/div_bg.png)");

Ainsi, seuls les frères et sœurs de l'entrée que vous modifiez verront leur arrière-plan réinitialisé.

Sur une note de côté, vous avez plusieurs divs avec le même identifiant, ce qui n’est pas une bonne idée.

Autres conseils

Cette ligne: $ ("entrée"). parent ("div"). css ("arrière-plan", "url (images / div_bg.png)" est à l'origine de Tous les autres éléments doivent être réinitialisés à la normale, ce qui vous permet d’avoir un seul état actif à la fois. Vous pouvez l’étendre à la ligne de sorte que chaque ligne ait un élément sélectionné.

Vous n'attribuez un comportement qu'à l'élément sélectionné, plutôt qu'à toutes les zones de saisie sélectionnées. Vous voudrez peut-être créer une fonction en tant que telle:

function foo()
{
   $('input :selected').css(bar);
}

Maintenant, chaque fois que vous obtenez un événement click sur un événement d'entrée, appelez barre. Vous devrez peut-être modifier foo pour répondre à vos spécifications.

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