2012-02-16 7 views
1

У меня есть два переключателя, которые нажимают на один из двух разделов контента. Код для этого:jquery Анимация только один раз

$("input[name='registrationType']").click(function() { 
    var registrationType = $(this).attr('id'); 
    if (!registrationType) { 
     return; 
    } 
    $("#contributorForm, #studentForm").hide(); 
    if (registrationType == "Student") { 
     $("#studentForm").show(); 
    } else if (registrationType == "Contributor") { 
     $("#contributorForm").show(); 
    } 
}); 

Я хотел бы добавить простую анимацию, .show('slow') этому процессу. Поскольку я думал об этом, хотя, я понял, что я только хотел, чтобы он использовал анимацию при первом нажатии одной из переключателей. Есть ли способ сделать это без необходимости вводить какую-то логику, чтобы определить, является ли это первым щелчком (например, перед моей логикой скрытия, проверьте, не скрыты ли они, что такое состояние «нагрузка»), затем кодирование что-то вроде этого:

if (registrationType == "Student") { 
    if(firstClick) { 
     $("#studentForm").show('slow'); 
    } else { 
     $("#studentForm").show(); 
    } 
} 

Просто кажется, что много дополнительного кода для чего-то относительно простого.

ответ

1

Рабочий раствор

$("input[name='registrationType']").click(function() { 
    var regType = $(this).attr('id'); 
    if (!regType) return; 

    $('div[id$="Form"]').hide(); 
    var contro = $('div[id^="' + regType.toLowerCase() + '"]'); 
    if ($(contro).attr("data") != null) $(contro).show(); 
    else $(contro).show('slow'); 
    $('div[id$="Form"]').attr("data", "shown"); 
});​ 

Demo на jsFiddle.net.

Надеюсь, это вам поможет.

+0

Как это решить мою проблему анимации с .show («медленным») только в первый раз, без необходимости писать целую кучу шаблона, а при анимации других событий клика? Помните, что это настройка переключателя, где пользователи могут переключаться взад и вперед. –

+0

Проверьте [это] (http://jsfiddle.net/aJSxN/2/). Работает ли это для вас? Соответственно, будет обновлен ответ. –

+0

Нет, возможно, я не формулирую то, что искал. Я хорошо знаком с тем, как анимация происходит при нажатии на переключатель. То, что я искал, было менее верным способом сделать это. [Вот текущий код, который я использую] (http://jsfiddle.net/aJSxN/3/). Первый щелчок переключателя активирует панель, независимо от того, какой из них щелкнул. последующие клики отображают соответствующую панель, но не оживляют. –

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