JQuery скрывает все элементы, кроме текущего

0

У меня есть 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');
});

Что я могу сделать, чтобы скрыть все флажки, которые видны помимо текущего (блок, на который я нажал)?

  • 0
    Как я уже писал, проблема заключается в следующем: 1) я нажимаю на блок, и появляется флажок 2) когда я нажимаю на флажок, все остальные флажки должны скрываться, и должен оставаться только текущий. 3) Проблема в том, что все остальные флажки скрываются, в том числе текущая ведьма появляется снова. Так что у меня есть ведьма, которая не должна быть. В любом случае, я уже получил полезную информацию, которую я проверял, и она отлично работает. Спасибо
Теги:

2 ответа

5
Лучший ответ

используйте фильтр .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();                
});

http://jsfiddle.net/r8yBd/

  • 0
    $(this).siblings().find('input').hide(); как другая альтернатива.
  • 0
    Это прекрасно работает, спасибо, вы были очень быстры. Я уже оценил вопрос несколько секунд назад, и мне нужно подождать 7 минут, чтобы сделать это снова. Кстати, вы думаете, что этот вопрос поможет другим?
Показать ещё 2 комментария
1

Пытаться

$(".item").click(function(){     
    $(".item").find('input').addClass('hidden');                    
    $(this).find('input').removeClass('hidden');
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню