Булевы атрибуты в HTML — это специальные атрибуты, которые могут быть
либо присутствующими, либо
отсутствующими на элементе. Присутствие атрибута
автоматически означает значение true, отсутствие —
false. К классическим примерам относятся
checked, disabled, readonly,
selected и multiple.
В Dom7 работа с такими атрибутами осуществляется через методы
.attr(),
.removeAttr() и специализированные подходы
для булевых значений.
Для получения текущего состояния булевого атрибута используется метод
.attr(). Он возвращает строку
"true"/"false" только если атрибут явно задан,
но чаще достаточно проверить наличие атрибута через его наличие:
var checkbox = $('.my-checkbox');
if (checkbox.attr('checked') !== undefined) {
console.log('Элемент отмечен');
}
В Dom7 также часто используется логика:
var isChecked = !!checkbox[0].checked;
Использование свойства DOM напрямую (.checked,
.disabled) обеспечивает точную проверку состояния элемента,
так как .attr() может вернуть строковое значение или
undefined.
Для установки булевых атрибутов через Dom7 используется метод
.attr(name, value):
var input = $('.my-input');
input.attr('disabled', true); // Добавляет атрибут disabled
input.attr('readonly', false); // Не удаляет атрибут! Только устанавливает значение false
Важно понимать, что прямое присвоение false через
.attr() не удаляет атрибут из DOM. Для корректного
управления булевыми атрибутами используется комбинация
.attr() и .removeAttr():
input.attr('disabled', true); // включение
input.removeAttr('disabled'); // отключение
Часто требуется динамически менять состояние булевого атрибута. В Dom7 удобно создавать универсальные функции:
function toggleAttr(el, attrName) {
var element = $(el);
if (element.attr(attrName) !== undefined) {
element.removeAttr(attrName);
} else {
element.attr(attrName, true);
}
}
toggleAttr('.my-button', 'disabled'); // Включает или отключает атрибут
Такой подход особенно полезен для элементов форм, когда требуется реагировать на действия пользователя.
Dom7 поддерживает работу с коллекциями элементов. Для массового
управления атрибутами можно использовать each или методы
напрямую:
$('.checkbox-group').each(function(el) {
$(el).attr('checked', true);
});
Для снятия всех атрибутов:
$('.checkbox-group').each(function(el) {
$(el).removeAttr('checked');
});
Использование коллекций делает код компактным и удобным для динамически генерируемых элементов.
.prop() и .attr()Хотя Dom7 не имеет встроенного метода .prop() как
jQuery, важно понимать разницу:
.attr('checked') — обращается к атрибуту
DOM, который может быть задан в HTML..checked (свойство) — отражает текущее
состояние элемента, которое может отличаться от исходного
атрибута.Пример:
var checkbox = $('.my-checkbox')[0];
console.log(checkbox.checked); // true или false, текущее состояние
console.log(checkbox.getAttribute('checked')); // "checked" или null, исходное значение атрибута
Для динамических интерфейсов управление через свойство
.checked предпочтительно, а .attr()
используется для первоначальной настройки или сериализации формы.
.attr(name, true)..removeAttr(name)..checked, .disabled).each, .attr(),
.removeAttr()).Булевы атрибуты являются фундаментальной частью управления формами и интерактивными элементами в браузере. Dom7 предоставляет минималистичный, но эффективный инструментарий для их работы, сочетая методы манипуляции атрибутами с прямым доступом к свойствам DOM.