2016-06-24 8 views
-1

Ich habe die folgende HTML (sein wirklich Code JSX für reagieren, aber es ist das gleiche):Überprüfen Sie alle Kontrollkästchen, dass Spiel Array Artikel

<div id="roles-checkboxes"> 
    <label id={role} key={index} ><input type="checkbox" name="checkbox" value={role.role} /> {role.role}</label> 
    <label id={role} key={index} ><input type="checkbox" name="checkbox" value={role.role} /> {role.role}</label>  
</div> 

Ich habe ein Array, das ich in meiner Funktion übergeben, die alle enthält die role Kontrollkästchen, die geprüft werden sollten:

checkRoleBoxes(roles){ 
    $('#roles-checkboxes').each(function(){ 
     if ($.inArray($(this).val(), roles)){ 
      $(this).prop('checked', true); 
     } 
    }) 

ich kann nicht die Boxen zu bekommen scheinen trotz meiner Funktion zu überprüfen, den zu finden, setze ich die Eigenschaft checked falsch? Ich habe auch $(this).attr('checked', true); ohne Glück versucht.

+1

Ihre Nutzung von 'each()' auf einem 'id' Selektor bedeutet, dass Sie mehrere Elemente mit der gleichen' id' haben, die ungültig ist, und würde die Ursache für das Problem sein. Ändern Sie die ID für diese Kontrollkästchen in eine Klasse. –

+0

@RoryMcCrossan Er wählt nicht einmal die Eingabe, die er wählt, das Eltern-Div – MoustafaS

Antwort

0

Ändern der Wähler zu sein:

$('#roles-checkboxes input') 
0

Ich bin ziemlich sicher, dies:

$('#roles-checkboxes').each(); 

ist einfach über einen div laufen. Wahrscheinlich es ändern:

$('#roles-checkboxes input[type=checkbox]').each(); 
Verwandte Themen