jQuery addClass, если установлен переключатель - PullRequest
2 голосов
/ 02 ноября 2011

Может ли кто-нибудь помочь мне с этой проблемой?

$(document).ready(function() {
    if(
        $("input.check").is(":checked")){
            $(this).parent().addClass("question-box-active");
    }
});

Я пытаюсь добавить класс (question-box-active) к родителю .check (переключатель), только если онпроверено.Это нормально работает, если я тестирую с предупреждением, но мне не удается добавить этот класс.

Спасибо всем за помощь.

Обновление: это HTML-код формы.Я скопировал только 3 деления из 48. Как вы уже догадались, я пытаюсь добавить класс в блок вопросов, если переключатель уже отмечен при загрузке страницы.Пока не повезло.

<div class="question-box">
    <input class="check" type="checkbox" name="question-1" value="1" <?php if(isset($_POST['question-1'])) echo "checked"; ?> />
    <span class="question">1. Save a rainforest or grow organic vegetables</span>
</div>

<div class="question-box alt">
    <input class="check" type="checkbox" name="question-2" value="1" <?php if(isset($_POST['question-2'])) echo "checked"; ?> />
    <span class="question">2. Solve complicated math problems</span>
</div>

<div class="question-box">
    <input class="check" type="checkbox" name="question-3" value="1" <?php if(isset($_POST['question-3'])) echo "checked"; ?> />
    <span class="question">3. Act in a movie, play, or television show</span>
</div>

Ответы [ 4 ]

2 голосов
/ 03 апреля 2013

Это будет работать.

$(document).ready(function() {

    var foo = $('input.check:checked');

    if ( foo.is(':checked') ) {
        foo.parent().addClass('question-box-active');
    }
});
2 голосов
/ 02 ноября 2011

Я думаю $(this) не относится к радиопереключателю в вашем случае

Вы можете привязать событие щелчка переключателя и решить, что делать дальше ...

$(document).ready(function(){
    $("input.check").click(function(){
        if($(this).is(":checked")){
            $(this).parent().addClass("question-box-active");
        }
    });
});
2 голосов
/ 02 ноября 2011

Используемый this находится в контексте функции обратного вызова обработчика ready, поэтому он не указывает на input.check, как вы ожидали.

Вместо этого попробуйте что-то подобное:

$(document).ready(function() {

    var foo = $('input.check');

    if ( foo.is(':checked') ) {
        foo.parent().addClass('question-box-active');
    }

});

Предполагается, что логика вашего кода верна.Я предполагаю, однако, что вы пытаетесь сделать что-то похожее на то, что Даг предоставил в другом ответе.Размещение некоторого HTML может помочь прояснить.

2 голосов
/ 02 ноября 2011

Попробуйте что-то вроде

$('input.check').is(':checked').each(function() { 
    $(this).parent().addClass('question-box-active');
});
...