2009-09-09 15 views
2

Hiya, je suis vraiment coincé .. J'ai besoin des conseils d'urgence: D ici est mon html:Jquery sélectionnez div dans une rangée

<!-- 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 je J'essaie de faire .. est quand je sélectionne une entrée radio le div dans lequel il se trouve devrait changer d'arrière-plan et il fonctionne parfaitement s'il n'y a qu'une seule ligne, mais par exemple si j'essaie de sélectionner la valeur dans la première rangée alors je sélectionnez 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 l'arrière-plan comme il se doit, mais la div dans la première rangée reve rse lui-même à d'autres arrière-plan, bien que l'entrée est resté vérifié .. voici ce que je suis en train de réaliser

alt text http://i26.tinypic.com/34ythlj.png

Et voici ce que je réalise:

alt text http://i31.tinypic.com/24pweau.jpg

+0

Vous avez deux divs avec id = "entry" dans la rangée 1. Cela peut vous causer quelques problèmes. – jrummell

+0

Je l'ai fixé à class = "entry" – ant

+0

plus de suggestions? – ant

Répondre

3

Quel est le but de votre deuxième ligne de jquery?

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

Cela va réinitialiser l'arrière-plan de tous les divs "entry". Si je comprends bien votre objectif correctement je pense que vous voulez:

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

De cette façon, seuls les frères et sœurs de l'entrée que vous changez auront leur arrière-plans remis à zéro. Sur une note de côté, vous avez plusieurs divs avec le même identifiant, ce qui n'est pas une bonne idée.

+0

J'ai modifié l'entrée de l'ID en entrée de la classe, erreur oui, mais lorsque je supprime deuxième ligne $ (this) .parent ("div"). css ("arrière-plan", "url (images/div_bg.png)"); // CE Puis quand je clique sur tous mes divs deviennent verts – ant

+0

merci qui était la solution – ant

0

Cette ligne: $("input").parent("div").css("background", "url(images/div_bg.png)" est provoquant le retour à la normale de tous les autres éléments, ce qui vous permet d'avoir seulement 1 état actif à la fois. Vous pouvez l'étendre à la ligne afin que chaque ligne puisse avoir un élément sélectionné.

+0

"Vous pouvez l'étendre à la ligne afin que chaque ligne puisse avoir un élément sélectionné." - Comment je fais ça ?TNX – ant

0

Vous attribuez uniquement un comportement à l'élément sur lequel vous avez cliqué, plutôt qu'à toutes les zones de saisie sélectionnées. Vous voudrez peut-être faire une fonction en tant que telle:

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

Maintenant, lorsque vous obtenez un événement de clic sur un événement d'entrée, appelez la barre. Vous devrez peut-être modifier foo pour répondre à vos spécifications.

+0

Cela semble fonctionner en partie, je vous remercie, je suppose que j'oublié de mentionner que seulement 1 radio peut être sélectionné par ligne donc aussi un div dans une ligne peut changer de fond J'ai modifié le code un peu comme vous le suggérez $ ("input"). click (function() { $ ('entrée: sélectionné'). parent ("div"). css ("arrière-plan", "url (images/div_bg.png)"); $ (this) .parent ("div"). css ("arrière-plan", "url (images/div_bg_hover.png)"); – ant