1行で jQuery toggle する!

色々未検証です。

たとえばフォームとかで、
「男性 or 女性」のラジオボタン選んで、それに応じてその後の項目を出し分けるなど。
普通に書くと下記のようになりますかね。

<label><input type="radio" name="sex" value="男性"> 男性</label>
<label><input type="radio" name="sex" value="女性"> 女性</label>
<div id="man_wrap" style="display:none;">
	■彼女は、いますか?<br />
	<input type="text" name="man_answer" />
</div>
<div id="woman_wrap" style="display:none;">
	■彼氏は、いますか?<br />
	<input type="text" name="woman_answer" />
</div>

<script>
$(function(){
	$('[name="sex"]').change(function(){
		var value = $(this).val();
		if( value == '男性' ){
			$('#man_wrap').show();
			$('#woman_wrap').hide();
		} else if( value == '女性' ){
			$('#man_wrap').hide();
			$('#woman_wrap').show();
		} else {
			$('#man_wrap').hide();
			$('#woman_wrap').hide();
		}
	});
})
</script>

 

ここで使えるのが、
.toggle( Boolean )
です。

通常はこのtoggleさんは、
表示されてれば、隠す。隠されてれば表示する。
のですが、
.toggle( true ) で、表示する。
.toggle( false ) で、隠す。
になります。

それを元にさっきのJavascriptを書くと。

<script>
$(function(){
	$('[name="sex"]').change(function(){
		var value = $(this).val();
		$('#man_wrap').toggle( (value == '男性') );
		$('#woman_wrap').toggle( (value == '女性') );
	});
})
</script>

これでいけます。

そもそもif文自体が、trueかfalseかなので、それをまんまtoggleの中に入れちゃった系です。
ただこれは、いけるんじゃないかと思ってやったら動いただけなので、正しい使い方かどうかは、知りません。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です