2012-02-16 3 views
1

두 개의 라디오 버튼이 있는데, 클릭하면 두 개의 콘텐츠 div 중 하나가 표시됩니다. 그것을위한 코드 :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"); 
});​ 

jsFiddle.net에 Demo.

희망이 도움이됩니다.

+0

어떻게하면 다른 클릭 이벤트에도 애니메이션을 적용하면서 전체 목록을 작성할 필요없이 처음으로 .show ('느린') 애니메이션으로 내 문제를 해결할 수 있습니까? 이것은 사용자가 앞뒤로 전환 할 수있는 라디오 버튼 설정입니다. –

+0

[this] (http://jsfiddle.net/aJSxN/2/)을 확인하십시오. 너에게 효과가 있니? 따라서 대답이 업데이트됩니다. –

+0

아니, 아마도 내가 뭘 찾고 있었는지 분명히 말하지 않을거야. 라디오 버튼 클릭으로 애니메이션을 만드는 방법에 대해 잘 알고 있습니다. 내가 찾고 있었던 것은 그렇게하는 덜 장황한 방법이었다. [현재 사용하고있는 코드는 다음과 같습니다.] (http://jsfiddle.net/aJSxN/3/) - 라디오 버튼을 처음 클릭하면 클릭 한 것과 상관없이 패널이 애니메이션으로 나타납니다. 후속 클릭은 적절한 패널을 표시하지만 움직이지는 않습니다. –

관련 문제