Переключение чекбоксов с помощью jQuery

Владимир | | HTML, JavaScript, Web разработка.

На днях мне нужно было написать небольшую JavaScript функцию (на jQuery), которая переключала бы группу чекбоксов. Т.е. все отмеченные чекбоксы должны были стать неотмеченными и наоборот.

Кстати, это довольно широкораспространенная задача.

Количество чекбоксов изменялось динамически и некоторые из них могли быть не активными (их трогать нельзя).

Вобщем, уложился я в шесть строк (включая объявление функции).

function toggleAll() {
	var allCheckboxes = $("#checkboxes input:checkbox:enabled");
	var notChecked = allCheckboxes.not(':checked');
	allCheckboxes.removeAttr('checked');
	notChecked.attr('checked', 'checked');
}

Наверное, код можно еще подсократить, но, честно говоря, думать дальше не хочется 🙂 .

Вкратце поясню, как это работает.

Прежде всего, разметка:

Обычная группа чекбоксов, которые находятся внутри тега div. В принципе, разметка большой роли не играет. Главное, чтобы вы могли выбрать необходимые чекбоксы.

Алгоритм работы функции.

1) Находим все активные чекбоксы (input:checkbox:enabled).

2) Из них выбираем не отмеченные (not(':checked')).

3) Снимаем отметку у всех чекбоксов (для этого просто удаляем атрибут checked).

4) Отмечаем те чекбоксы, которые были раньше не отмечены (attr('checked', 'checked')).

Как видите, функция получилась довольно короткая.

Если есть идеи как её сократить, буду рад выслушать 😉

Интересно почитать:

Какова ваша отдача от инвестиций в час?