установите / снимите флажки bootstrap с помощью jQuery
Я сделал еще один в должности вчера и не имел успеха с ним. Теперь я попытаюсь переупорядочить идею и спросить снова, так как я не могу найти решение для этого (я новичок, и я очень стараюсь).
дело в том, что я работаю с этим шаблоном на основе Bootstrap, и это код, который я могу видеть непосредственно из одного из файлов и который я использую в своем проекте:
HTML-код фрагмент:
<div class="hide" id="states">
<div class="control-group">
<label class="control-label">Seleccione</label>
<div class="controls">
<label class="checkbox span4">
<input type="checkbox" value="all" id="allstates" name="all"/>Todas
</label>
<label class="checkbox span4">
<input class="states" type="checkbox" value="Caba" id="" name="st[]"/>Ciudad Autónoma de Buenos Aires
</label>
<label class="checkbox span4">
<input class="states" type="checkbox" value="Buenos Aires" id="" name="st[]"/> Buenos Aires
</label>
<label class="checkbox span4">
<input class="states" type="checkbox" value="Catamarca" id="" name="st[]"/> Catamarca
</label>
</div>
</div>
</div>
после большого поиска я основал при проверке, что мой код выглядит так (фрагмент):
<div class="controls">
<label class="checkbox span4">
<div class="checker" id="uniform-allstates">
<span>
<input type="checkbox" value="all" id="allstates" name="all">
</span>
</div>Todas
</label>
<label class="checkbox span4">
<div class="checker">
<span>
<input class="states" type="checkbox" value="Caba" id="" name="st[]">
</span>
</div> Ciudad Autónoma de Buenos Aires
</label>
<label class="checkbox span4">
<div class="checker">
<span>
<input class="states" type="checkbox" value="Buenos Aires" id="" name="st[]">
</span>
</div> Buenos Aires
</label>
<label class="checkbox span4">
<div class="checker">
<span>
<input class="states" type="checkbox" value="Catamarca" id="" name="st[]">
</span>
</div> Catamarca
</label>
</div>
как вы можете видеть, добавлен еще один div и другой span (серьезно не знаю, почему и как), поэтому я предполагаю, что теперь это какая-то проблема DOM, которая у меня есть.
это фрагмент моего JS-файла:
$('#allstates').click(function() {
$('.checkbox').find('span').addClass('checked');
});
таким образом, эта функция выбирает все флажки, которые у меня есть (хотя те, что я не хочу, потому что они принадлежат к другой категории).
Я хочу знать, почему добавлены div и span и как выбрать только флажки, которые я хочу.
для этого я пробовал такой код, но без успеха:
4 ответов
также важно добавить prop в true при выборе флажков:
$("#checkAll").click(function(){
var check = $(this).prop('checked');
if(check == true) {
$('.checker').find('span').addClass('checked');
$('.checkbox').prop('checked', true);
} else {
$('.checker').find('span').removeClass('checked');
$('.checkbox').prop('checked', false);
}
});
поскольку я упомянул, что эта функция проверила все флажки, которые у меня были (хотя те, которые не должны были быть проверены), я пытался найти решение:
$('#allstates').click(function() {
$('.checkbox').find('span').addClass('checked');
});
но это не то, что хотел. Я также упомянул, что заметил, что код был "другим" при его проверке (в Chrome с F12). Так как @thecbuilder сказал, он меняется, чтобы добавить стиль.
Я понял, что с тех пор код меняется... Мне пришлось сменить класс (флажок), с которого я запускал поиск "span tag", поэтому я меняю флажок класса на ID-состояния, и это результат:
$('#allstates').click(function() {
if($(this).attr("checked")){
$('#states').find('span').addClass('checked');
}else{
$('#states').find('span').removeClass('checked');
}
});
теперь он, наконец, работает.
Я думаю, что вы ищете код:
$(document).ready(function()
{
$("#allstates").on("change", function()
{
var checked = $(this).prop("checked");
$(this).parents(".controls")
.first()
.find("input[type=checkbox]")
.prop("checked", checked);
});
});
когда состояние флажка с идентификатором allstates
изменения, получить значение флажка, найти первый родительский элемент html с классом под названием controls
и затем только обновите все флажки в этом элементе со значением checked.
простой флажок начальной загрузки
<label><input type="checkbox" value="">Option 1</label>
при отладке в Chrome dev tool метка выглядит так https://tinker.нажмите / изображения/bootstrap-checkbox-label-2017-01-17_084755 - ... формат PNG
to toogle состояние флажка просто установите true|false
on lable.control.checked
label.control.checked = false; //uncheck
label.control.checked = true; //check
видео демо https://youtu.be/3qEMFd9bcd8