2012-02-16 9 views
1

2つのラジオボタンがあり、クリックすると2つのコンテンツdivの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')をこのプロセスに追加したいと考えました。私はそれについて考えていたので、初めてラジオボタンの1つをクリックするだけでアニメーションを使用したいと思った。これを行うには、最初のクリックかどうかを判断するためにロジックを入れなくてもいいです(例えば、ロジックを隠す前に、両方が隠されているかどうかを確認して、 "ロード中"の状態)

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( 'slow')でアニメーション化するという問題を解決しますか?覚えておいてください。これは、ユーザーが前後に切り替えることができるラジオボタンの設定です。 –

+0

[こちら](http://jsfiddle.net/aJSxN/2/)を確認してください。それはあなたのために働くのですか?したがって、回答が更新されます。 –

+0

おそらく私は私が探していたものを明確に表現していません。私は、ラジオボタンのクリックでアニメーションを作成する方法をよく知っています。私が探していたものはそれほど冗長ではなかった。 [ここでは私が使用している現在のコードです](http://jsfiddle.net/aJSxN/3/) - ラジオボタンの最初のクリックは、クリックされたものに関係なくパネルをアニメーション化します。後続のクリックは適切なパネルを表示しますが、アニメートしません。 –