jQuery: не (: проверено) не работает?

0

У меня есть следующий HTML:

<form class="pricing-downloads-right pricing-last-form" action="">
    <div class="pricing-levels-top-2">
        <input class="pricing-single-level" type="radio" name="sex" value="male"><strong>Single Level Download $49.95:</strong> Choose a single level (1 to 7) and receive access to all lessons, PDFs and review audio for that level, plus 30 days of online access ($80 value). Email us your level choice after purchase.<br>
        <input class="pricing-3-level-download" type="radio" name="sex" value="male"><strong>3 Level Download $99.95:</strong> Choose any 3 levels (1 to 7) and receive access to all lessons, PDFs and review audio for those levels, plus 60 days of online access ($190 value). Email us your level choices after purchase.<br>
        <input class="pricing-all-access-package" type="radio" name="sex" value="male"><strong>All Access Package $199.9:</strong> Receive access to all lessons, PDFs and review audio for all 7 levels, plus 90 days of online access ($300 value).<br>
    </div>
    <div class="pricing-levels-2">
        <p>Which level would you like? (Click all that apply)</p>
        <input type="checkbox" name="vehicle" value="Bike">Level 1<br>
        <input type="checkbox" name="vehicle" value="Bike">Level 2<br>
        <input type="checkbox" name="vehicle" value="Bike">Level 3<br>
        <input type="checkbox" name="vehicle" value="Bike">Level 4<br>
        <input type="checkbox" name="vehicle" value="Bike">Level 5<br>
        <input type="checkbox" name="vehicle" value="Bike">Level 6<br>
        <input type="checkbox" name="vehicle" value="Bike">Level 7<br>
    </div>
</form>

и jQuery:

jQuery('.pricing-downloads-right input[type=radio]').on('change', function(){
    if(jQuery('.pricing-levels-top-2 input.pricing-single-level:checked').length > 0){                 
          //since you don't want to target by name
          jQuery('.pricing-levels-2').show();
    }
});

jQuery('.pricing-downloads-right input[type=radio]').on('change', function(){
    if(jQuery('.pricing-levels-top-2 input.pricing-single-level:not(:checked)').lenght > 0){ 
           //since you don't want to target by name
           jQuery('.pricing-levels-2').hide();
    }
});

Поэтому я хочу, .pricing-levels-2 отображался, когда input.pricing-single-level проверяется и скрывается, когда он не установлен.

Прямо сейчас .pricing-levels-2 отображается, когда input.pricing-single-level проверяется, но он не скрывается при input.pricing-single-level.

Что я делаю неправильно?

Теги:

2 ответа

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

length орфографии:

if(jQuery('.pricing-levels-top-2 input.pricing-single-level:not(:checked)')
    .lenght > 0){

должно быть

if(jQuery('.pricing-levels-top-2 input.pricing-single-level:not(:checked)')
    .length > 0){
  • 1
    О, это была проблема грамматики, а не проблема программирования.
4

Пытаться

jQuery('.pricing-downloads-right input[type=radio]').on('change', function () {
    jQuery('.pricing-levels-2').toggle(jQuery('.pricing-levels-top-2 input.pricing-single-level:checked').length > 0);
}).change();

Демо: скрипка

Возможный лучший способ

jQuery(function ($) {
    var $pl2 = $('.pricing-levels-2');
    var $psl = $('.pricing-levels-top-2 input.pricing-single-level');

    $('.pricing-downloads-right input[type=radio]').on('change', function () {
        $pl2.toggle($psl.is(':checked')); // $ps1[0].checked
    }).change();

})

Демо: скрипка

Ещё вопросы

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