質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

6251閲覧

radioボタンの.hideにつきまして

pegy

総合スコア243

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/03/22 01:45

以下のようにradioボタンとその選択肢のテキスト(良い、悪い)をhideしたいのですが、
ボタンだけ消えてテキストは隠せませんでした。
このinput要素をdivで囲みdiv idのセレクタでhideした場合には隠すことができまた。

1.セレクタ#r1,#r2をhideしても消えてくれないのはあくまで隠す対象はタグだけという仕様なのでしょうか?

2.divで囲ってできましたが、まいかこのradioタグやテキストを挟む要素をdivで囲むのは煩雑です。テキストを伴うタグをどちらも隠すことができるシンプルな方法はございますでしょうか?

HTML

1<input id="r1" type="radio" name="btn" value="good">良い</input> 2<input id="r2" type="radio" name="btn" value="bad">悪い</input>

Javascript

1$('#r1,#r2').hide;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

HTML

1<input id="r1" type="radio" name="btn" value="good">良い</input> 2<input id="r2" type="radio" name="btn" value="bad">悪い</input>

そもそもこの書き方自体がHTMLのルールに則っていません。inputタグは閉じタグが存在しないので、そもそも良いとか悪いをinputの閉じタグで挟んでいること自体が構文エラーです。jQueryはHTMLのルールに則ってinputタグの開きタグ部分だけを消しているので、質問1についてはテキスト部分が消えないのは正しい動作です。

先程の構文エラーについて訂正するのであれば、本来ラジオボタンに名称をつけるタグとしてlabelというタグがあります。

HTML

1<!--labelタグでinputとテキストをまるごと挟んで関連付ける--> 2<label><input id="r1" type="radio" name="btn" value="good">良い</label> 3<label><input id="r2" type="radio" name="btn" value="bad">悪い</label> 4<!--またはlabelのfor属性でinputのidを指す--> 5<input id="r1" type="radio" name="btn" value="good"><label for="r1">良い</label> 6<input id="r2" type="radio" name="btn" value="bad"><label for="r2">悪い</label>

なので、テキストをhideするのであればlabelタグを指定して消す必要があります。

投稿2017/03/22 01:56

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SugiuraY

2017/03/22 02:53

コメントありがとうございます。 htmlのご指摘もありがとうございます。labelの使用についても理解致しました。
guest

0

ベストアンサー

他の方の指摘にもありますが、labelを利用すると付属する文字ごと非表示にする事が出来ます。
jquery側ではlabelのidを指定して、hideをしましょう。
###サンプルコード

html

1<!DOCTYPE html> 2<html> 3<head> 4<title>Sample</title> 5<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js" ></script> 6<script type="text/javascript"> 7 function UpdateState() { 8 value = $("input[name='btn']:checked").val(); 9 switch (value) { 10 case "good": 11 $('#l1').hide(); 12 $('#l2').show(); 13 break; 14 case "bad": 15 $('#l2').hide(); 16 $('#l1').show(); 17 break; 18 default: 19 break; 20 } 21 } 22 23 $(document).ready(function () { 24 UpdateState(); 25 }); 26 27 $(document).ready(function () { 28 $("input[name='btn']").click(function () { 29 UpdateState(); 30 }); 31 }); 32</script> 33</head> 34<body> 35 <label for="r1" id="l1" ><input id="r1" type="radio" name="btn" value="good"/>良い</label> 36 <label for="r2" id="l2"><input id="r2" type="radio" name="btn" value="bad"/>悪い</label> 37</body> 38</html>

投稿2017/03/22 02:09

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2017/03/22 02:59

ご回答ありがとうございます。 招致を致しました。
guest

0

UIを考慮すると面倒でもlabelで囲むのが妥当では?

<label><input id="r1" type="radio" name="btn" value="good">良い</label> <label><input id="r2" type="radio" name="btn" value="bad">悪い</label>

追記

姑息な手段でバグの温床のなりかねないのでお勧めはしませんが、
radioボタンの後ろのテキストノードに強制的にspanをつけて
コントロールするとか、できないことはないです

javascript

1<script> 2$(function(){ 3 $('input[type=radio]').each(function(){ 4 var n=$(this).get(0).nextSibling; 5 if(n.nodeName=='#text'){ 6 $(this).after($('<span>'+n.nodeValue+'</span>')); 7 n.parentNode.removeChild(n); 8 } 9 }); 10 $('#btn').on('click',function(){ 11 $('#r1,#r1~span,#r2,#r2~span').toggle(); 12 }); 13}); 14</script> 15 16<form> 17<input id="r1" type="radio" name="btn" value="good">良い 18<input id="r2" type="radio" name="btn" value="bad">悪い<br> 19<input id="btn" type="button" value="view/hide"> 20</form> 21

あくまでも頭の体操レベルで考えてください

投稿2017/03/22 01:57

編集2017/03/22 02:14
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2017/03/22 03:00

裏技についても、大変勉強になりました。そのような方法もあると学ばさせて頂きます?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問