#html #css #bootstrap-4
#HTML #css #bootstrap-4
Вопрос:
У меня есть некоторые элементы, использующие некоторые функции Bootstrap 4, а также некоторые пользовательские настройки.
<div class="btn-group btn-group-toggle" data-toggle="buttons">
<label class="btn btn-outline-selector make-active">
<input type="radio" name="options">A
</label>
<label class="btn btn-outline-selector">
<input type="radio" name="options">B
</label>
<label class="btn btn-outline-selector">
<input type="radio" name="options">C
</label>
<label class="btn btn-outline-selector">
<input type="radio" name="options">D
</label>
</div>
Для этой группы я бы хотел, чтобы один из labels
них был активным при загрузке страницы. Если я даю желаемому элементу active
класс, он устанавливается при загрузке страницы, но быстро удаляется браузером.
Я попытался установить класс, используя следующее, но он всегда эффективен (иногда страница загружается без установки класса).
$(document).ready(function(){
$('label.make-active').addClass('active');
});
Как я могу убедиться, что активный элемент сохраняет свой активный статус при загрузке страницы?
В идеале я мог бы установить этот активный статус на сервере.
Редактировать: похоже, что здесь может быть виноват Bootstrap
if (activeElement) {
$(activeElement).removeClass(CLASS_NAME_ACTIVE);
}
Комментарии:
1. Установка
.active
класса на ярлыке должна работать. Похоже, у вас может быть другой код, который его изменяет2. @abney317 Я думаю, вы можете быть правы, удаление этого файла оставляет их активными
bootstrap.bundle.js
Ответ №1:
Логика в bootstrap.bundle.js
требует, чтобы наш input
тип radio
также был проверен active
, чтобы предотвратить удаление класса.
if (input.type === 'radio') {
if (input.checked amp;amp; this._element.classList.contains(CLASS_NAME_ACTIVE)) {
triggerChangeEvent = false;
} else {
var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
if (activeElement) {
$(activeElement).removeClass(CLASS_NAME_ACTIVE);
}
}
}