簡體   English   中英

Ruby on Rails DOM更新僅在頁面重新加載后有效

[英]Ruby on Rails DOM updates only work after page reload

我正在根據當前路由更新html元素的類名稱。 當單擊一個元素時,我還有一些jquery顯示菜單。 當我進入主頁時,html類已正確添加到html元素中,並且單擊后可正確顯示菜單。 但是,當我通過單擊導航鏈接導航到另一條路線時,該路線會正確更改,但是html類名稱未更新,並且jquery不再觸發。

application_helper.rb

  def html_class(class_name)
    content_for(:html_class) { class_name }
  end 

application.html.erb

<html class="<%= yield(:html_class) || '' %>"> <!-- class is only updated on page reload -->

home.html.erb

<% html_class 'nail' %>

項目/ index.html.erb

<!-- no html_class provided, should default to '' -->
<div class="row projects">
  <% @projects.each do |project| %>
    <%= render project %>
  <% end %>
</div>

site.js

//當路線更改頁面必須重新加載以觸發時

$(function() {
  $('#initials').click(function() {
    $('.slider, .nav-btn').toggleClass('closed');
  })
});

嘗試使用以下包裝您的jQuery。 該問題可能是由於Turbolinks加載了您使用AJAX單擊以加快速度的頁面。 因此,此包裝器告訴Javascript在Turbolinks加載時觸發,而不是在刷新整個頁面時觸發。

$(document).on('turbolinks:load', function() {
  $('#initials').click(function() {
    $('.slider, .nav-btn').toggleClass('closed');
  })
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM