同じページでもどこから遷移してきたかによってjQueryが効いてくれない時があります。
以下が問題の部分のコードです。
js側
app/assets/javascript/application.js //= require tether //= require jquery //= require jquery_ujs //= require bootstrap //= require turbolinks //= require_tree . //= require bootstrap-tagsinput.min $(function(){ $('#slide').click(function(){ if ($('#target').css('display') == 'none') { $('#target').slideDown('normal'); } else { $('#target').slideUp('normal'); } }); });
View側
app/views/users/show.html.erb ・ ・ ・ <div id="target"> <div class="row"> <p>aaaの機能が追加されました</p> </div> </div> ・ ・ ・
css
app/assets/stylesheets/custom.scss ・ ・ ・ #target { width: 100%; height: 250px; color: #000000; overflow: auto; display: none; .notification-first-row { width: 100%; height: 20px; padding: 0; margin: 0; border-bottom: solid rgb(147,147,147); border-width: 0.2px; margin-left: 10px; } .row { border-bottom: solid rgb(147,147,147); border-width: 0.2px; margin-top: 20px; margin-left: 10px; .notification-text{ display: inline-block; } } } ・ ・ ・
問題の画面は以下のようになります。
赤線の部分は最初は表示されておらず、お知らせをクリックした時に正しい挙動ではスライドダウンして赤線の部分が現れるのですが、この画面への遷移のやり方がいくつかあり、特定の画面遷移をした時はお知らせをクリックしても何も動作しません。
以下が挙動が正常な時と異常な時の状況になります。
---挙動が正常な時---
・別のページから遷移した時
Rails
<%= link_to @creator.users[0].nickname, {:controller => "users", :action => "show", :id => @creator.users[0].id}, :method => :get %>
実際に生成されるHTML
<a data-method="get" href="/users/6">test3434nm7</a>
で遷移した時。
・リロードした時。
・URLを直接入力して遷移した時。
---挙動が異常な時---
・headerにこのページへのリンクがあり、そのリンクから遷移してきた場合。
Rails
<%= link_to "Profile", current_user, { :class => "dropdown-item" } %>
実際に生成されるHTML
<a class="dropdown-item" href="/users/6">Profile</a>
以上になります。ちなみにChromeを使っているのですが、異常な挙動の時はファビコンのところに表示されるリロードマークが表示されません。あまり詳しくないので憶測ですが、リロードするかキャッシュを使うかの問題で、キャッシュを使う時はjQueryがうまく読み込まれないということなのでしょうか?
他に必要な情報があったら言っていただければと思います。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/24 15:29