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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

0回答

487閲覧

HTML属性を一部分だけ無効にしたい

kazup1125

総合スコア6

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2020/04/08 07:19

前提・実現したいこと

Railsアプリを制作中です。
index.htmlに表示されている行をクリックするとモーダルウィンドウでshow.htmlを表示するようにしています。
しかし、行の中にあるボタンをクリックすると画面遷移とモーダル表示が重複してしまい、フリーズしてしまうので、
%tdの一部分のみ、クリックしてもモーダル表示しないようにしたいです。

該当のソースコード

haml

1#index.html.haml 2- @clients.each do |client| 3 %tr{ data: { target: "#client-modal#{client.id}" , toggle: :modal } } 4 %td= client.company_name 5 %td= client.base_name 6 %td= client.phone 7 %td= client.fax 8 %td.text-right 9 = show_btn(client) 10 = edit_btn(client) 11 = destroy_btn(client) 12

試したこと

一行ずつモーダル表示させるコードを書く

%td{ data: { target: "#client-modal#{client.id}" , toggle: :modal } }= client.company_name %td{ data: { target: "#client-modal#{client.id}" , toggle: :modal } }= client.base_name %td{ data: { target: "#client-modal#{client.id}" , toggle: :modal } }= client.phone %td{ data: { target: "#client-modal#{client.id}" , toggle: :modal } }= client.fax

しかし、同じコードを何度も書くのは、可読性が下がる。

試したこと2

colgroupでまとめてdata属性を与える

%colgroup{ span: '4', data: { target: "#client-modal#{client.id}" , toggle: :modal }} - @clients.each do |client| %tr{ data: { target: "#client-modal#{client.id}" , toggle: :modal } } %td= client.company_name %td= client.base_name %td= client.phone %td= client.fax %td.text-right = show_btn(client) = edit_btn(client) = destroy_btn(client)

モーダル表示しなくなってしまった。

試したこと3

javascriptで属性を削除したい

javascript

1#index.html.haml 2:javascript 3 $(function() { 4 $('tr').removeAttr('data'); 5 });

ボタン部分のみdata属性を削除するにはどのように書けばいいかわかりませんでした????

###どの方法ならうまくいくのか?
javascriptを触らなきゃいけなさそうだけど…

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

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

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

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

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

storm3

2020/04/08 09:36

イベントの伝播については確認しましたでしょうか? tdタグにあるボタンを押したクリックイベントの後に、trタグにクリックイベントが伝播しているようにみえます。 参考: https://itsakura.com/javascript-bubbling
kazup1125

2020/04/08 10:16

ご回答ありがとうございます。 そうですね。tdタグにあるボタンをクリックするとモーダルウィンドウが開き、ボタンに設定された画面に遷移する感じです。
storm3

2020/04/09 09:45

原因もしイベントの伝播(バブリング)だった場合は、tdにつけたボタンのclickイベントの中でイベントのバブリングをキャンセルすれば解決すると思います。 その場合は自己解決にしてください。 イベントのバブリングのキャンセルでも解決しない場合は、質問文にイベントのバブリングのキャンセルもダメだったということを追記すれば、別の観点から回答が得られると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問