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

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

詳細はこちら
Ruby on Rails 5

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

Ruby on Rails

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

jQuery

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

Q&A

解決済

1回答

1953閲覧

$(window).on("load resize",function() {を用いた際にページ遷移時のみ発火しない

sakusakusaku10

総合スコア21

Ruby on Rails 5

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

Ruby on Rails

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

jQuery

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

0グッド

0クリップ

投稿2019/09/06 03:32

編集2019/09/06 03:35

前提・実現したいこと

現在、可変的なwitdhを持った画像に対して同値のheightを作るjQueryを作っています。
コード自体は簡単でありますが、中々うまくいかないのでご教授お願いいたします。

発生している問題・エラーメッセージ

発生してる状態としてはon"load resize"でイベント設定しているのですが 更新時とブラウザサイズ変更時は適用されるのですが、ページ遷移時が適用されません。

該当のソースコード

js

1$(window).on("load resize",function() { 2 var img_width = $('.resize').width(); 3 $('.resize').css("height", img_width+ "px"); 4 console.log(img_width) 5});

試したこと

更新時や画面サイズ変更時は適用されている為、コードやクラス名との関連付けは問題ないと思っています。
またrails5を使っているためturbolinkに問題があるのかと

= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'

の追加や

$(document).on('turbolinks:load', function() { 〜該当コード〜 });

とやってみましたが、特に効き目はなかったです。

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

ruby 2.5.1
Rails 5.0.7.2
jquery-rails (4.3.5, 4.3.3)
jquery-ui-rails (6.0.1)

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

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

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

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

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

guest

回答1

0

ベストアンサー

function resizeImage() { var img_width = $('.resize').width(); $('.resize').css("height", img_width+ "px"); console.log(img_width) } $(window).on("load resize", resizeImage); $(document).on('turbolinks:load', resizeImage);

ではないでしょうか。

$(document).on('turbolinks:load', function() { $(window).on("load resize", //... });

試された方法????は動作としては

  • 画面遷移したときに
  • window load のイベントハンドラをつける

のようになります。

が window load は更新ボタンをしたときにしか発火しないので、画面遷移時にイベントハンドラをつけても意味がありません

投稿2019/09/06 04:09

編集2019/09/06 04:11
unhappychoice

総合スコア1531

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

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

sakusakusaku10

2019/09/06 04:13

ありがとうございます!!! window loadは更新時のみだったのですね。。。 とてもわかりやすい説明で納得いきました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問