2012-01-12 2 views
0

Я как бы застрял на чем-то ...else заявление не работает

Мое другое заявление, похоже, не работает правильно.

<div class="main-options"> 
    <label class="main-label" for="main-options">Main Options:</label> 
    <input class="option-a" type="radio" name="main-options"> 
    <label for="main-options">Option A</label> 
    <input class="option-b" type="radio" name="main-options"> 
    <label for="main-options">Option B</label> 
</div> 

<div class="sub-options"> 
    <label class="sub-options-label" for="sub-options">Sub Options:</label> 
    <input class="option-c" type="radio" name="sub-options"> 
    <label for="main-options">Option A</label> 
    <input class="option-d" type="radio" name="sub-options"> 
    <label for="sub-options">Option B</label> 
</div> 

Javascript:

$('.option-b').click(function() { 
    if ($(this).is(':checked')) { 
     $('.sub-options').hide(); 
    } 
    else { 
     $('.sub-options').show(); 
    } 
}); 

jsFiddle: http://jsfiddle.net/VcVYM/

Моя цель состоит в том, чтобы быть в состоянии нажать опцию B и скрыть подвариантах DIV. Но когда опция B не проверена, я хочу, чтобы подпараметры снова отображались ...

Мне удалось скрыть ее, как только опция -b проверена, но мое заявление else не похоже на покажите, если это не проверено.

Спасибо, что посмотрели!

D

+0

Просто введите код, минимальный автономный пример, чтобы воссоздать проблему. Это коротко. –

+0

вам также нужно создать обработчик для опции A, чтобы показать вспомогательные параметры. – hallie

ответ

1

Вам нужно добавить обработчик щелчка на обоих радиокнопок

$('.option-b, .option-a').click(function() { 
    if ($('.option-b').is(':checked')) { 
     $('.sub-options').hide(); 
    }    
    else { 
     $('.sub-options').show(); 
    } 
}); 
0

Вы не стреляя событие щелчка, когда вы кликните по-а, и, таким образом, он не будет проверять, если опция-б проверяется или нет. Это должно работать, хотя:

$('.option-a, .option-b').click(function() { 

    if ($(this).hasClass('option-a')) { 

     $('.sub-options').hide(); 

    } 
    else { 
     $('.sub-options').show(); 
    } 

}); 
0

Ваш обработчик события присоединен к варианту-б, поэтому он не будет срабатывать, когда опция-а является clcked

$('.option-b').click(function() { $('.sub-options').hide(); }); 
$('.option-a').click(function() { $('.sub-options').show(); }); 
0

причины это не показывается, вы только вызов этой функции на событии нажатия опционной B:

$('.option-b').click(function() { 

if ($(this).is(':checked')) { 
    $('.sub-options').hide(); 
}   
else { 
    $('.sub-options').show(); 
} 

Поэтому нажатие на вариант A не вызывает ничего, и поэтому вспомогательные параметры никогда не отображаются. Каждый раз, когда вы нажимаете на B, он, конечно, устанавливает значение true, чтобы эта часть работала.

Поскольку это радио кнопки вы даже не нужен чек - просто добавить событие щелчка для опции в:

$('.option-a').click(function() { 

    $('.sub-options').show(); 

} 
-1

У меня есть обновить JS скрипку для вас. Теперь он работает. http://jsfiddle.net/VcVYM/10/

+0

Все отзывы были отличные, спасибо! – DougP

+0

вы можете разместить здесь свой код решения? –