2013-04-01 4 views
-1

Pour l'exemple de code ci-dessous, lorsque vous cochez la case courseID, je dois cocher ou décocher la case CourseGroup. Le td se répète sur la page en fonction d'une autre requête plus haut.Sélectionnez un div précédent en utilisant jQuery

J'ai essayé d'utiliser:

$('.checkedCourse').click(function() { 
    if ($(this).closest("td").find('.checkGroup').prop('checked') == true && this.checked == false) 
    $(this).closest("td").find('.checkGroup').prop('checked', false); ... 

Mais il désactive toutes les cases de courseGroup sur la page et pas seulement ceux de ce groupe.

J'ai également essayé $(this).parents('div:eq(0)') mais je ne sais pas comment revenir à plus d'un div prev().

<td colspan="7"> 
    <cfoutput query="courseData"> 
     <div name="div1"> 
      <input type="checkbox" name="courseGroup" class="checkGroup"> 
      <div class="courseBreak"></div> 
      <div class="courseLine"> 
       <div class="courseSection">#courseSections#</div> 
       <div class="courseTitle">#courseTitle#</div> 
       <div> 
        <input type="checkbox" class="checkedCourse" name="courseID" id="courseID" value="#courseId#"> 
       </div> 
      </div> 
     </div> 
    </cfoutput> 
</td> 

Voici le rendu HTML: rendered HTML

je dois avoir le groupe gras (par exemple AMBI 12-13 Somme) sans contrôle quand je décoché un cours dans ce groupe

+0

Utilisez-vous 'id =" courseID "'? Les ID doivent être uniques. – j08691

+0

Veuillez fournir le code HTML final. Il semblerait que toutes vos cases à cocher sont dans le même 'td'. –

Répondre

0

Merci à tous, une combinaison de ce que vous me dit fonctionne! Maintenant, je viens de

if ($(this).closest('div[name=courseGrouping]').find('.checkGroup').prop('checked') == true && this.checked == false) 
       $(this).closest('div[name=courseGrouping]').find('.checkGroup').prop('checked', false); 

pour savoir comment faire cette case dessus seront vérifiés lorsque tout est vérifié sur le formulaire ci-dessous, je suis sûr que je viens de faire une boucle ou quelque chose.

0

Vous pouvez tout simplement faire ceci:

if ($(this).closest(".courseLine").prevAll('.checkGroup:first').prop('checked') == true && this.checked == false) 
    $(this).closest(".courseLine").prevAll('.checkGroup:first').prop('checked', false); 
+0

Cela ne fonctionne pas non plus Ce n'est pas le plus proche, il est 2 ci-dessus –

1

Étant donné que vos cases à cocher sont dans le même td, vous ne pouvez pas l'utiliser pour trouver ma Tching case à cocher. Vous pouvez cependant utiliser le div qui est un parent commun.

$(this).closest(".courseLine").closest("div").find('.checkGroup') 

Je suggère de mettre une classe sur cette div extérieure pour éviter les 2 appels à closest.

+0

J'ai retiré le coursID - Je ne l'utilisais pas de toute façon –

0

Assurez-vous que vos identifiants sont uniques et essayez ceci:

$('.checkedCourse').click(function() { 
    $(this).closest('div[name=div1]').find('.checkGroup').prop('checked', !$(this).is(':checked')); 
}); 

jsFiddle example

+0

qui ne fonctionne pas non plus –

Questions connexes