2015-08-12 4 views
11

Я хочу сделать непроверенное радио кнопки скрывать и просто отображать проверяемый один:Скрыть кнопку непроверенных радио

<ul class="woof_list woof_list_radio"> 
<li > 
    <input type="radio" id="woof_72_55cb07a61800a" class="woof_radio_term" data-slug="elektronik" name="product_cat" value="72"> 
    <label for="woof_72_55cb07a61800a">Elektronik <span>(812)</span></label> 
</li> 
<li > 
    <input type="radio" id="woof_113_55cb07a741fec" class="woof_radio_term" data-slug="pompa-air" name="product_cat" value="113" checked="checked"> 
    <label for="woof_113_55cb07a741fec" checked="checked" style="font-weight: bold;">Pompa Air <span>(29)</span></label> 
</li> 
<li > 
    <input type="radio" id="woof_184_55cb07a7513ac" class="woof_radio_term" data-slug="brand" name="product_cat" value="184"> 
    <label for="woof_184_55cb07a7513ac">Brand <span>(814)</span></label> 
</li> 
</ul> 

Вот мой JavaScript:

$(document).ready(function(){ 

     $("ul.woof_list").find("li").each(function(index){ 

     $(this).find('input[checked="checked"]', ".woof_list"); 

     $(this).click(function(e) { 
      e.preventDefault(); 
     // by default, hide all li's 
     $('ul.woof_list li').toggle(); 
     $('.woof_is_closed').trigger('click'); 
      // show only the selected li 
     $(this).show(); 
    }); 
    console.log($(this).find('input[checked="checked"]', ".woof_list").val()); 

я получил значение из но я не знаю, что мне делать тогда.

+4

'$ ('input [type = checkbox]: not (: checked)'). Hide()'? –

+3

Непонятно, что вы хотите. Когда вы нажимаете одну из радиокнопков, вы хотите скрыть 2 других, которые не отмечены, или? – Loyalar

+0

Я не понимаю, потому что вы устанавливаете свою логику внутри псевдо-готового события, поэтому, если вы хотите по умолчанию, просто используйте CSS ↯↯↯ –

ответ

7

Попробуйте

$(document).ready(function() { 
    $(':radio').on('change', function() { 
     $(':radio').not($(this)).closest('li').hide(); 
    }); 
}); 

https://jsfiddle.net/ds3Lfms7/1/

Это будет скрыть все остальные Ли, когда вы проверяете один

+0

Спасибо, что это решает вопрос! –

1

Если вы задаете для сокрытия только непроверенную радиокнопку затем Попробуйте

demo

$('input[type=radio]:not(:checked)').hide(); 

    $('li').click(function() { 
     $('input[type=radio]').show(); 
     $('input[type=radio]:not(:checked)').hide(); 

    }); 
4

Только в случае, если вы хотите сохранить поведение переключения была ранее, поэтому нажатие на радио снова поднимет все опции, которые вы можете попробовать, что:

$(document).ready(function(){ 

    $("ul.woof_list li input[type='radio']").click(function(e) { 

     // hide all li's (or show all) 
     $('ul.woof_list li').toggle(); 

     // show only the selected li 
     $(this).parent().show(); 

    }); 

}); 

http://jsfiddle.net/optionsit/pa0Lmwpg/2/

+0

В то время как другие ответы также верны, пожалуйста, разрешите пользователю повторно выбирать, допустил ли он ошибку, как позволяет этот код. Это просто лучший UX. – dberm22

+0

Да, но это, вероятно, понадобится для настройки. Я оставил '$ ('.woof_is_closed') .trigger ('click');' потому что это было частью вопроса, но это произойдет, когда пользователь захочет повторно выбрать. редактирование: я просто удалил эту строку, просто имейте в виду, что каждая инструкция по функции щелчка будет выполняться при «повторном выборе», –

1

Сочетание @DGS's answer и @Lorenzo's answer. Он использует более чистую форму DGS, но имеет функцию toggle() Lorenzo, чтобы позволить пользователю повторно показывать элементы, щелкая по щелчку. Это просто лучший UX, позволяющий пользователю исправить свой выбор на случай, если он совершил ошибку, изначально.

demo here

$(document).ready(function() { 
    $(':radio').on('click', function() { 
     $(':radio').not($(this)).closest('li').toggle(); 
    }); 
}); 

Где ответ Лоренцо не работает должным образом с JQuery Mobile 1.4.2 проверил, этот ответ делает.

Смежные вопросы