Есть много способов сделать это.
С вашим текущим HTML лучшим способом будет просто перебрать элементы и выбрать их по отдельности;
function select(start, end) {
for (var i=start;i<end;i++) {
$('.checkbox[value="' + i + '"]').prop('checked', true);
}
}
Хотя этобыло бы намного более эффективным, если бы вы могли добавить уникальный идентификатор для каждого из элементов (имейте в виду, что до HTML5 вы не могли начинать идентификатор с числа, поэтому вам может понадобиться добавить к нему префиксчто-то;
function select(start, end) {
for (var i=start;i<end;i++) {
document.getElementById("prefix_" + i).checked = true;
}
}
С точки зрения того, как динамически сопоставлять <a href=#>Check 1-20</a>
с select(1,20)
, лучшим способом было бы добавить общий класс к гиперссылкам и использовать атрибуты data
для установки минимумаи max;
<a href="#" class="highlight" data-min="1" data-max="20">Check 1-20</a>
Тогда:
$(document).on('click', '.highlight', function (e) {
event.preventDefault();
var self = $(this);
select(self.data('min'), self.data('max'));
});
Вы также можете анализировать текст гиперссылки вручную, если хотите (и избегать атрибутов data
;
$(document).on('click', 'a', function (e) {
event.preventDefault();
var values = $(this).text().match(/ (\d+)-(\d+)/);
select(parseInt(values[1], 10), parseInt(values[2], 10));
});