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

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

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

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

jQuery

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

Q&A

解決済

2回答

1855閲覧

ページが表示された時点でセレクトボックスに何らかの要素が選択されていればクラス付与

hibikikudo

総合スコア238

JavaScript

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

jQuery

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

1グッド

1クリップ

投稿2016/10/03 06:36

編集2016/10/03 06:50

###前提・実現したいこと
ページが表示された時点でセレクトボックスに何らかの要素が選択されていればクラス付与、空ならクラス除去をしたい。

###発生している問題・エラーメッセージ
下記のコードですと、クリックして選択した時点で発火しますが、ページが表示された時点で発火させたい。

###該当のソースコード
これだと動きますが、selectedですでに選択済みのoption要素に対して、ページ表示と同時に発火してくれません。

html

1<select data-target="#hoge"> 2 <option value="" selected="selected">1</option> 3 <option value="">2</option> 4 <option value="">3</option> 5</select>

javascript

1$(function () { 2 $('select[data-target^="#hoge"]').on("change", function () { 3 var flag = ($(this).select) ? 'addClass' : 'removeClass'; 4 $($(this).attr('data-target'))[flag]('selected'); 5 }); 6});

###試したこと
これだと動かないです…

javascript

1$(function () { 2 $('select[data-target^="#hoge"]').on("load", function () { 3 var flag = ($(this).select) ? 'addClass' : 'removeClass'; 4 $($(this).attr('data-target'))[flag]('selected'); 5 }); 6});
act823👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

これではだめすか?

javascript

1$(function () { 2 $('select[data-target^="#hoge"]').on("change", function () { 3 var flag = ($(this).select) ? 'addClass' : 'removeClass'; 4 $($(this).attr('data-target'))[flag]('selected'); 5 }); 6 // 追加↓ 7 $('select[data-target^="#hoge"]').change(); 8});

投稿2016/10/03 06:44

tkturbo

総合スコア5572

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

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

hibikikudo

2016/10/03 06:55 編集

ありがとうございます。こちらで試してみます!
hibikikudo

2016/10/03 08:32

シンプルにやりたいことが実現できましたので、こちらをBAとさせていただきます。ありがとうございました。
guest

0

※value値を設定し、valueがないものは選択されていないものとします。

html

1<select data-target="#hoge"> 2 <option value="">未選択</option> 3 <option value="1" selected="selected">1</option> 4 <option value="2">2</option> 5 <option value="3">3</option> 6</select>

画面読み込み時「のみ」実行させるのであれば以下になるかと思います。

javascript

1$(function () { 2 var $select = $('select[data-target^="#hoge"]'); 3 var flag = $select.val().length > 0; 4 $($select.attr('data-target')).toggleClass('selected', flag); 5});

ちなみに変数名に$selectというように「$」を名前を付けているのはjqueryの要素であることを示す慣習です。

投稿2016/10/03 06:52

ShoheiTai

総合スコア897

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

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

hibikikudo

2016/10/03 09:30

私の質問方法が悪く失礼いたしました。今回のケース画面読み込み時「のみ」ではなかったので…。この方法は未選択やdisabled時に応用できそうです。どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問