2013-04-21 5 views
1

Я помогаю моему другу Michaela выйти за наш класс веб-дизайна. Она сделала HTML, и я изменил несколько строк и добавил некоторые div. Она хочет, чтобы он, если пользователь нажимает на переключатель, отображается соответствующий div. Все div для ее формы начинают скрываться в классе «hidden_destiny». - Это будет серия вложенных div, и мне может понадобиться изменить макет позже.Show/Hide Divs Несколько кнопок радиосвязи JQuery

Вот JsFiddle. Вот мой JavaScript:

if ($('#radio_starwars').is(':checked')){ 
    $('#clicked_starwars').hide().slideDown('slow'); 
    $('.hidden_destiny').not('#clicked_starwars').hide().slideUp('slow'); 
} 
else if ($('#radio_avengers').attr('checked', 'true')){} 
else if ($('#radio_batman').attr('checked', 'true')){} 
else if ($('#radio_xmen').attr('checked', 'true')){} 
else if ($('#radio_harryp').attr('checked', 'true')){} 
else if ($('#radio_lotr').attr('checked', 'true')){} 

[EDIT] Обновлен код. Добавьте идентификатор идентификатора в код и обновленную ссылку JsFiddle.

+0

так что это проблема вы сталкиваетесь? не могли бы вы рассказать нам об этом – Sachin

+0

Во-первых, вам не хватает идентификатора класса, периода, прежде чем radio_starwars – 2013-04-21 20:40:43

+0

на самом деле, это должен быть идентификатор - # – 2013-04-21 20:42:20

ответ

2
$('.fate').click(function() { 
    $('.hidden_destiny').each(function() { 
     if ($(this).is(':visible')) { 
      $(this).slideUp('slow'); 
     } 
    }); 
    var id = $(this).val(); 
    $('#clicked_' + id).slideDown('slow'); 
}); 

jsfiddle

+0

Спасибо !!! Это спасло мне много кода. Я собирался создать оператор if для каждого. Что означает 'this' в вашей функции и как работает' .each'? Я могу догадаться, но я бы наверняка знал наверняка. – Drue

+0

'this' - это элемент, который вызывалась функцией, каждый из которых выполняет итерацию по выбору элементов, которые в этом примере представляют собой все элементы с классом' hidden_destiny' – razzak

+0

Спасибо. Кроме того, я внедрил код, и я заметил, что анимация меняется, если я нажимаю на переключатель несколько раз. Как это происходит? – Drue

2

Попробуйте этот код:

$(":radio").change(function(){ 
    $(".hidden_destiny").hide()//hide divs 
    $("#clicked_"+this.id.replace("radio_","")).show()//show div by radio id 
}) 

http://jsfiddle.net/YZ9fh/

+0

Спасибо. Я не видел '.change()' или третью строку кода. Кроме того, ваша скрипка работает, но тот же код у меня нет? http://jsfiddle.net/TuCQa/6/ – Drue

+0

Поскольку jQuery включен в вашу ссылку. – Mihail

+0

Ох ... Я этого не осознавал. Я забыл об этом. Я включил его в фактическую страницу. – Drue

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