Ваш HTML неверен.id
значения должны быть уникальными в документе ( ссылка ).
При этом, игнорируя значения id
, вы можете использовать это (живой пример ):
$(':checkbox[name^=correct]').each(function() {
switch (this.value) {
case "0":
case "3":
case "4":
this.checked = true;
break;
}
});
, который использует селектор подстрок CSS3 (jQuery поддерживает почти все CSS3) в атрибуте name
, чтобы выбрать любой флажок с именем, начинающимся с correct
, изатем использует jQuery each
для их обхода.Затем мы устанавливаем свойство checked
для тех, которые имеют желаемое значение value
.
. Вы также можете сделать это с более длинным селектором и без цикла ( живой пример ):
$(':checkbox[name^=correct][value=0], :checkbox[name^=correct][value=3], :checkbox[name^=correct][value=4]').attr('checked', true);
Обновление : перечитывая ваш вопрос, похоже, вам может понадобиться сделать это более динамично:
<script type='text/javascript'>
(function() {
var boxes = $(); // Assumes jQuery 1.4 or higher
<?php foreach($toCheck as $checkMe) { ?>
echo "boxes.add(':checkbox[name=^=correct][value=" . $toCheck . "]');";
<?php }; ?>
boxes.attr('checked', true);
})();
</script>
... что приведет к:
<script type='text/javascript'>
(function() {
var boxes = $(); // Assumes jQuery 1.4 or higher
boxes.add(':checkbox[name=^=correct][value=0]');
boxes.add(':checkbox[name=^=correct][value=3]');
boxes.add(':checkbox[name=^=correct][value=4]');
boxes.attr('checked', true);
})();
</script>
... который будет отмечать соответствующие поля.Но это будет не очень эффективно (весь этот обход документов), лучше использовать PHP для объединения значений в селектор или switch
, как показано выше.