обнаружение проверки jQuery, скрывающей предыдущую (jsFiddle прилагается)

#javascript #jquery

#javascript #jquery

Вопрос:

Я пытаюсь удалить текстовые поля с флажками, как показано в jsFiddle. Однако, как вы можете видеть, один из флажков отмечен, но соответствующее ему текстовое поле существует. Может кто-нибудь помочь мне отредактировать это, чтобы скрыть соответствующие текстовые поля для уже проверенных элементов при загрузке?

Спасибо!

http://jsfiddle.net/masedesign/jdbmK/1/

Ответ №1:

Комментарии:

1. С каких это пор два поиска DOM проще, чем один? 😛

2. Мне нравится ваш энтузиазм. Тем не менее, спасибо вам всем.

Ответ №2:

Попробуйте это: http://jsfiddle.net/FloydPink/NqKP9 /

 $(document).ready(function() {
    $('.check').each(function() {
        $(this).prev().toggle(!$(this).is(':checked'));
    });
    $('.check').click(function() {
        $(this).prev().toggle();
    });
});
  

Ответ №3:

Ну вот. Поскольку вы уже нажали на dom для all .check, вы можете просто отфильтровать этот результат по тем, которые находятся в текущем :checked состоянии, и скрыть предыдущий элемент.

 $(document).ready(function() {
    $('.check').click(function() {
        $(this).prev().toggle();
    }).filter(':checked').each(function(){
        $(this).prev().hide();
    });
});
  

http://jsfiddle.net/robert/F2vkq/

Ответ №4:

Вы устанавливаете флажок с checked атрибутом, но у вас нет кода, который ищет флажки, которые были установлены таким образом.

 $('.check').each(function() {
    if ($(this).is(':checked'))
        $(this).prev('.date').toggle();
});
  

Ответ №5:

Вот обновленная скрипка

http://jsfiddle.net/jdbmK/5/

 $(document).ready(function() {
    $('.check').click(function() {
        $(this).prev().toggle();
    });
    // toggle already checked boxes
    $(':checked').each(function() {
        $(this).prev().toggle();
    })
});
  

Оптимизированная версия:http://jsfiddle.net/jdbmK/6 /

 $(document).ready(function() {
    function toggle() {
        $(this).prev().toggle();
    }
    $('.check').click(toggle);
    // toggle already checked boxes
    $(':checked').each(toggle);                
});