2012-05-01 17 views
1

ラジオボタンのクリックに基づいてdivを表示または非表示にするオンラインのスクリプトがあります。jQuery fadeToggleを含めるためにスクリプトを表示/非表示にする

私はfadeToggle()またはslideToggle()をトランジションに追加することでこれを改善しようとしています。しかし、私がこれを行うとき、関数は以前と同じように機能しません。 もう一方のラジオボタンをクリックすると、両方のdivが表示され、両方の表示が再び非表示になります。

// Show/Hide forms based on radio button selection 
$('input[name="screen_type"]').bind('change',function(){ 
var showOrHide = ($(this).val() == 2) ? true : false; 
$('.welcome_screen').toggle(showOrHide); 
    var showOrHide = ($(this).val() == 1) ? true : false; 
$('.training_screen').toggle(showOrHide); 
}); 

ここだすべてのヘルプみんな、歓声

+0

"これまでと同じように動作しません"。それは何のように働くのに使われたのですか?それはあなたのように働きたいですか? –

+0

私は質問で説明を更新しました。歓声 –

答えて

3

fadeToggleとslideToggleため http://jsfiddle.net/clintongreen/JEbFq/

おかげでapi doc

を表示または非表示にするには、パラメータを取ることはありませんここでフィドルを参照してください。すばやく汚い代わりにそれを行う方法:http://jsfiddle.net/hzSnU/1/

+0

fadeToggleを使用して同じ機能を実装する方法はありますか? Cheers –

+1

あなたは間違っています:彼はトグルを指しており、彼は[doc](http://api.jquery.com/toggle/)に従っています: "メソッドの2番目のバージョンはブールパラメータを受け取ります。 「真」なら、一致した要素が表示されます... " – montrealist

+0

ありがとう、素晴らしい作品、歓声 –

1

あなたはこのような何か行うことができます:

// Hide lis 
    $(".training_screen").hide(); 
    $(".welcome_screen").hide();  

// Show/Hide forms based on radio button selection 
    $('input[name="screen_type"]').bind('change',function(){ 
     var fnTraining, fnWelcome; 
     if ($(this).val() == 1) { 
      fnTraining = "slideDown"; 
      fnWelcome = "slideUp"; 
     } else { 
      fnTraining = "slideUp"; 
      fnWelcome = "slideDown"; 
     } 
     $('.welcome_screen')[fnWelcome](); 
     $('.training_screen')[fnTraining](); 
});​ 

の作業のデモ:http://jsfiddle.net/jfriend00/4aSbG/

か、をあなたが表示/非表示パラメータを取るslideToggleOption jQueryのメソッドを作るなど、それを使用することができますこの:

// Hide lis 
    $(".training_screen").hide(); 
    $(".welcome_screen").hide();  

jQuery.fn.slideToggleOption = function(show /* other optional args from slideToggle */) { 
    var args = Array.prototype.slice.call(arguments, 1); 
    if (show) { 
     return(this.slideDown.apply(this, args)); 
    } else { 
     return(this.slideUp.apply(this, args)); 
    } 
}; 

// Show/Hide forms based on radio button selection 
    $('input[name="screen_type"]').bind('change',function(){ 
     var showWelcome = ($(this).val() == 1); 
     $('.welcome_screen').slideToggleOption(showWelcome); 
     $('.training_screen').slideToggleOption(!showWelcome); 
});​ 

の作業のデモ:http://jsfiddle.net/jfriend00/Lqeqe/

関連する問題