У меня есть 4 блока, и всякий раз, когда я нажимаю на один из них, в нем появляется флажок. Если я нажму на другой блок, текущий флажок исчезнет, и появится другой флажок, который хорош. Проблема в том, что если я нажму на один блок, и появится флажок, когда я нажму на этот флажок, блок исчезнет, и он не должен.
У меня есть следующий код html:
<div class="item">1 <input class="hidden" type="checkbox"></div>
<div class="item">2 <input class="hidden" type="checkbox"></div>
<div class="item">3 <input class="hidden" type="checkbox"></div>
<div class="item">4 <input class="hidden" type="checkbox"></div>
следующий код css:
.hidden {
display: none;
}
и javascript-код:
$(".item").click(function(){
$(".item").find('input').hide();
$(this).find('input').show('fast');
});
Что я могу сделать, чтобы скрыть все флажки, которые видны помимо текущего (блок, на который я нажал)?
используйте фильтр .not()
как .not()
$(".item").click(function(){
$(".item").not(this).find('input').hide();
});
Редактировать:
Вы можете подумать, хочет ли пользователь изменить свое мнение и снова включить все параметры. Вы можете сделать это так:
$(".item").click(function(){
var items = $(".item").not(this).find('input');
if($('input',this).is(':checked')) items.hide();
else items.show();
});
$(this).siblings().find('input').hide();
как другая альтернатива.
Пытаться
$(".item").click(function(){
$(".item").find('input').addClass('hidden');
$(this).find('input').removeClass('hidden');
});