🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

jQuery

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

Q&A

2回答

712閲覧

ボタンクリック後遷移したページのclass名を変更したい

jun3030

総合スコア16

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2020/11/27 14:07

前提・実現したいこと

ボタンをクリックし、ページが再読み込みされる際にクリックしたボタンのクラス名を変更したいです。
ソート機能を作リたいのですがデザインで躓いてます。ボタンをクリックした際にjavascriptでクラス名を変更し、デザインを変更しようと考えたのですが、再読み込みされると変更したクラス名もリセットされてしまいデザインも元に戻ってしまいます。

何か良い方法はないでしょうか、、

イメージ説明

ボタンクリック後、ページが再読み込みされてもクリックしたボタンが白くなるようにしたい↓

イメージ説明

該当のソースコード

html

1<ul class="nav nav-tabs"> 2 <li class="nav-link" id="test1"><a href="/shop" id="sort1">全てのマッサージ</a></li> 3 <li class="nav-link" id="test2"><a href="/shop" id="sort2">料金が安い順</a></li> 4 <li class="nav-link" id="test3"><a href="/shop" id="sort3">口コミが多い順</a></li> 5 <li class="nav-link" id="test4"><a href="/shop" id="sort4">口コミの評価が高い順</a></li> 6</ul>

javascript

1#料金が安い順をクリックしたときの処理 2#クラス名の nav-link → nav-link activeに変更するとボタンが白くなる 3 4$(function(){ 5 $("#sort2").click(function(){ 6 if($("#test2").attr("class")=="nav-link"){ 7 console.log("ttt"); 8 $("#test2").removeClass("nav-link").addClass("nav-link active");} 9 }); 10});

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

neko_daisuki

2020/11/27 17:01

HTMLはrails(erb)で書いていますか?
jun3030

2020/11/28 11:14

回廊ありがとうございます! 書いてます!
guest

回答2

0

リンクに/shop?order=priceのようなクエリ文字列を付加し、erbではparams[:order]でその値を取得します。

以下のような記述になります。

erb

1<ul class="nav nav-tabs"> 2 <li class="nav-link <%= 'active' if params[:order].blank? %>"> 3 <%= link_to_if params[:order].present?, "全てのマッサージ", "/shop" %> 4 </li> 5 <li class="nav-link <%= 'active' if params[:order] == "price" %>"> 6 <%= link_to_if params[:order] != 'price', "料金が安い順", "/shop?order=price" %> 7 </li> 8 <li class="nav-link <%= 'active' if params[:order] == "comments_count" %>"> 9 <%= link_to_if params[:order] != "comments_count", "口コミが多い順", "/shop?order=comments_count" %> 10 </li> 11 <li class="nav-link <%= 'active' if params[:order] == "rate" %>"> 12 <%= link_to_if params[:order] != "rate", "口コミの評価が高い順", "/shop?order=rate" %> 13 </li> 14</ul>

以下は上記の要点です

active if params[:order].blank?
params[:order]が空の時は"全てのマッサージ"をactiveにします。

link_to_if
第一引数がtrueの場合のみリンクになります。falseのときは第二引数がただのテキストで表示されます。
たとえば/shop?order=priceを表示したときに"料金が安い順"をクリックできないようにしています。

投稿2020/11/28 19:39

neko_daisuki

総合スコア2090

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

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

0

JavaScriptでするより、「current={:tab_id}」とかでGETパラメータ送ってサーバーサイドのテンプレート(おそらくRailsなのであればerbかhamlかはたまた)で判断させた方が良いです。

投稿2020/11/28 06:38

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問