[英]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.