Я занимаюсь написанием некоторых вспомогательных функций для моих коллег-разработчиков, которые не слишком знакомы с Bootstrap, - который берет базовый html и создает для них макеты начальной загрузки.
В этом случае я пытаюсь сделать правильный горизонтальный список переключателей.
Пример:
<fieldset data-type="horizontal" data-bootstrap="radiogroup">
<label>
<input type="radio" name="g1" value="default" data-bind="checked: true"/>Recent
</label>
<label>
<input type="radio" name="g1" value="order" data-bind="checked: false"/>By Number
</label>
<label>
<input type="radio" name="g1" value="advanced" data-bind="checked: false"/>Advanced
</label>
</fieldset>
Я запускаю некоторый JQuery внутри файла typescript, связанного с этой страницей, и код читает:
function layoutUnwrappedBootstrapControls() {
$("*[data-bootstrap='radiogroup']")
.each((index, element) => {
var listOfRadioButtons = $(element).find('label').clone();
$(element).children().remove();
$(element)
.append("<div class='btn-group col-lg-12 col-md-12 col-sm-12 col-xs-12 clearfix' data-toggle='buttons'></div>");
$(element)
.children(":first")
.append(listOfRadioButtons)
.find("label")
.addClass("btn btn-primary")
.css("width", (100 / listOfRadioButtons.length) + '%');
$(element).children(":first").button().button('refresh'); //< the issue
});
}
Что производит:
<div class="btn-group col-lg-12 col-md-12 col-sm-12 col-xs-12 clearfix" data-toggle="buttons">
<label class="btn btn-primary" style="width: 33.3333%;">
<input type="radio" name="g1" value="default" data-bind="checked: true" data-mini="true" data-theme="h" id="tz15" checked="checked">Recent
</label>
<label class="btn btn-primary" style="width: 33.3333%;">
<input type="radio" name="g1" value="order" data-bind="checked: false" data-mini="true" data-theme="h" id="tz16">By Number
</label>
<label class="btn btn-primary" style="width: 33.3333%;">
<input type="radio" name="g1" value="advanced" data-bind="checked: false" data-mini="true" data-theme="h" id="tz17">Advanced
</label>
</div>
На странице это кажется прекрасным. Тем не менее, проблема, я имею в виду часть data-toggle='buttons'
- она говорит мне, что bootstrap запускает некоторый код, чтобы инициализировать список переключателей - и, похоже, он не играет хорошо с динамически созданными кнопочными группами.
Моя попытка повторной инициализации группы кнопок не работает. Кнопки радио по-прежнему остаются статическими - не заменяются "активными" на метке и "проверяются" на входе.
Часть спойлера: я не могу воспроизвести свою проблему на JSFiddle, используя идентичный код! он работает так, как ожидалось, на JSFiddle: JSFiddle
Как заставить повторную инициализацию динамически созданной группы кнопок?