Форма содержит несколько флажков и область div
, которая должна быть свернута или видна в зависимости от значения флажка. Я использую Bootstrap 3.
При переключении div
при изменении состояния флажка не проблема, я смог выяснить, как запустить div
в правильном состоянии:
<input type="checkbox" id="someCheckbox">
<div id="collapseContainer">
...
</div>
<script type="text/javascript">
var $collapseContainer = $('#collapseContainer');
$collapseContainer.collapse({
toggle: true // THIS HAS NO EFFECT
});
var $checkbox = $('#someCheckbox');
$checkbox.change(function() {
// Toggle the Container when CheckBox is clicked
$collapseContainer.collapse('toggle');
});
if ($checkbox.is(':checked') == false) {
// Solution from other thread - DOES NOT WORK
$collapseContainer.removeClass('in');
//}
</script>
В ответах на аналогичный вопрос предлагается вручную удалить класс in
, чтобы установить его в состояние collapsed
, но это не работает. Кажется, что применение плагина запускает анимацию, которая добавляет класс in
только по завершении. Таким образом, in
отсутствует при проверке начального состояния флажка.
Как решить эту проблему?
EDIT:
Чтобы прояснить это: если установлен флажок при загрузке страницы, div должен начинаться как расширенный . Если флажок не установлен, div должен быть свернутым .
В моих тестах добавление опции toggle: true
к вызову плагина не имело абсолютно никакого значения.
РЕДАКТИРОВАТЬ 2:
Я использовал ответ @pc_coder для создания следующего простого файла HTML. Хотя фрагмент в его ответе, кажется, работает просто идеально, версия HTML - нет. Единственная разница между checkbox1
и checkbox2
состоит в том, что № 2 отображается сразу же, пока появляется анимация checkbox1. Но фактическая цель, то есть nr. 1 скрыт, а № 2 не работает.
Единственное отличие от фрагмента в том, что я помещаю весь код в $(document).ready
. Если я оставлю код настройки снаружи, он вообще не сработает.
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
var $checkbox = $('#someCheckbox');
var $checkbox2 = $('#someCheckbox2');
var $collapseContainer = $('#collapseContainer');
var $collapseContainer2 = $('#collapseContainer2');
$checkbox.change(function() {
$collapseContainer.collapse('toggle');
});
$checkbox2.change(function() {
$collapseContainer2.collapse('toggle');
});
$collapseContainer.collapse($checkbox.prop('checked') ? "show" : "hide");
$collapseContainer2.collapse($checkbox2.prop('checked') ? "show" : "hide");
});
</script>
<input type="checkbox"checked id="someCheckbox" />
<div id="collapseContainer" >
Lorem ipsum dolor sit amet, consectetur adipisicing elit
</div>
<input type="checkbox" id="someCheckbox2" />
<div id="collapseContainer2" class="collapse">
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
</div>
</body>
</html>