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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

693閲覧

新規追加1コンテンツを他のコンテンツと連動しないようにしたい

flyingHigh

総合スコア41

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/07/24 08:37

編集2019/07/24 08:44

全体の説明として
+ボタンを押下で1コンテンツを追加でき、
-ボタンを押下でボタンが付属するコンテンツを削除できます。
1コンテンツ目のプルダウンで「なし」以外を選択すると「追記」項目が表示されます。

現状
+ボタン押下で2コンテンツ目を追加し、その中のプルダウンを選択しても「追記」項目が表示できません。
1コンテンツ目内でプルダウンを非表示にすると2コンテンツ目と連動し、2コンテンツ目のプルダウンも
非表示になってしまいます。

どうしたいか
これを修正し、1コンテンツ目内では「追記」項目を表示、
2コンテンツ目では「追記」項目を非表示という風に、各コンテンツごとに別々の内容にするには
どうすればよろしいでしょうか。

このようになっている理由は、コンテンツがそれぞれ独立していないからだと思い、
各コンテンツに番号を振るか、または、.index()で何番目のコンテンツかを把握し、
プルダウンがそれぞれ別のコンテンツ内にあるということを記述すればよいのかな と思っていますが、
いまいち方法がわかりません。

ご教授いただけませんでしょうか。

HTML

1<div class="ice_inner"> 2 <form class="input-form"> 3 <div style="display:none;"><input type="hidden" name="_method" value="POST"></div> 4 <fieldset> 5 <div class="form-group input-text mb-3 mb-4"> 6 <p class="text input-title mb-2 fs18">アイス 7 </p> 8 <div class="select-area m-0"> 9 <div class="form__select__80 delete--auto--area mx-auto"> 10 <div class="input-form__select form-group indent text-left mr-3 mb-3 m-0 col-lg-6"> 11 <select name="select--ice[]"> 12 <option value="select--non" selected="selected">なし</option> 13 <option value="select--a">バニラ</option> 14 <option value="select--b">ストロベリー</option> 15 <option value="select--c">抹茶</option> 16 <option value="select--d">チョコ</option> 17 </select> 18 </div> 19 </div> 20 </div> 21 </div> 22 </fieldset> 23 <fieldset> 24 <div class="form-group input-text mb-3 mb-4 area--password" style="display: none;"> 25 <p class="text input-title mb-2 fs18">追記 26 27 </p> 28 <div class="select-area m-0"> 29 <input type="password" name="ice_security_password[]" class="form-control input-form__text" placeholder="" required=""> 30 </div> 31 </div> 32 </fieldset> 33 <div class="button--delete--ice col-md-10"> 34 <button class="float-right">ー</button> 35 </div> 36 <div class="button--add--ice col-md-10"> 37 <button class="float-right">+</button> 38 </div> 39 </form> 40</div>

CSS

1 2.ice_inner{ 3padding-top: 55px !important; 4 position: relative; 5} 6.button--delete--ice{ 7top: 1em; 8right: 7em; 9position:absolute; 10} 11.button--add--ice{ 12top: 1em; 13right: 3em; 14position:absolute; 15} 16

Javascript(jQuery3.3.1使用)

1$(function(){ 2 3 $('.input-form__select select[name="select--ice[]"]').change(function() { 4 5 let $select = $(this); 6 let index = $select.index(this); 7 let value = $select.val(); 8 let optionText = $select.find(':selected').text(); 9 10 switch (optionText) { 11 case 'select--non': 12 $(this).$('div.area--password').css('display','none'); 13 break; 14 case 'select--a': 15 case 'select--b': 16 case 'select--c': 17 case 'select--d': 18 $(this).$('div.area--password').css('display','block'); 19 break; 20 } 21 22 /* 下記記述を↑上の方式で書きたい */ 23 if ($('select[name="select--ice[]"] option:selected').val() == 'select--non') $('div.area--password').css('display','none'); 24 }); 25 $('.input-form__select select[name="select--ice[]"]').change(function() { 26 if ($('select[name="select--ice[]"] option:selected').val() == 'select--a') $('div.area--password').css('display','block'); 27 }); 28 $('.input-form__select select[name="select--ice[]"]').change(function() { 29 if ($('select[name="select--ice[]"] option:selected').val() == 'select--b') $('div.area--password').css('display','block'); 30 }); 31 $('.input-form__select select[name="select--ice[]"]').change(function() { 32 if ($('select[name="select--ice[]"] option:selected').val() == 'select--c') $('div.area--password').css('display','block'); 33 }); 34 $('.input-form__select select[name="select--ice[]"]').change(function() { 35 if ($('select[name="select--ice[]"] option:selected').val() == 'select--d') $('div.area--password').css('display','block'); 36 }); 37 --> 38}); 39 40 41 /* tab ice add new contents */ 42 $(function(){ 43 $('.button--add--ice').on('click',function(){ 44 45 // 現在押されたボタン位置を取得 46 var index_this = $(".button--add--ice").index(this); 47 48 // 現在押されたボタン位置にある要素の下に同じ要素を追加 49 $(".ice_inner:eq(" + index_this + ")").after($(".ice_inner:eq(" + index_this + ")").clone(true)); 50 51 52 // 現在押されたボタン位置から追加された要素の位置を設定 53 var index_added = index_this + 1; 54 55 // 項目を初期化する。(※ファイルの項目初期化は懸案) 56 $('.ice_inner').eq(index_added).find("input[type='text']").val(''); 57 $('.ice_inner').eq(index_added).find("input[type='checkbox']").prop('checked',false); 58 59 60 }); 61 62 63 $('.button--delete--ice').on('click',function(){ 64 65 // 要素がすべて削除された場合は未設定状態に戻す。 66 if($('.ice_inner').length == 1) { 67 $('.ice_inner').addClass('d-none'); 68 $('.ice_inner:eq(0)').find("input[type='text']").val(''); 69 $('.ice_inner:eq(0)').find("input[type='checkbox']").prop('checked',false); 70 $('#ice .tab--nothing').removeClass('d-none'); 71 $('li.ice .text-status').addClass('d-none'); 72 $('li.ice .text-status-none').removeClass('d-none'); 73 $('p.text--lead--ice').addClass('d-none'); 74 } 75 76 // 現在押されたボタン位置を取得 77 var index_this = $(".button--delete--ice").index(this); 78 79 // 現在押されたボタン位置にある要素を削除する。 80 if($('.ice_inner').length > 1) { 81 $(".ice_inner:eq(" + index_this + ")").remove(); 82 } 83 84 }); 85 }); 86 87 88

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

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

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

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

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

guest

回答1

0

ベストアンサー

index を取得するよりも、.closest() で範囲を絞ったほうが簡単かもしれません。

JavaScript

1 //let optionText = $select.find(':selected').text(); 2 let optionText = $select.val();

JavaScript

1 //$(this).$('div.area--password').css('display','block'); 2 $('div.area--password', $select.closest('.ice_inner')).css('display','block');

投稿2019/07/25 04:51

x_x

総合スコア13749

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

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

flyingHigh

2019/07/29 00:54

.closest() で範囲を絞る、ありがとうございます! その方法でやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問