javascript - Turbolinks 实现 document.ready,点击切换
问题描述
由于 Rails 6.1 弃用了 .ready(),我尝试寻找一种行为类似的替代方法。这就是为什么考虑将此功能迁移到 turbolinks 以使其与 Rails 6.1 一起使用。当前函数如下所示:
$(document).ready(() => {
$('.toggle').on('click', (e) => {
e.stopPropagation();
e.preventDefault();
$('#' + e.target.getAttribute('aria-controls')).toggleClass('is-hidden');
})
})
这是我想使用该功能切换的带有“隐藏”的代码。
<div class="content">
<%= form_for :user, url: users_edit_url(@user), action: :update, method: :post, html: {id: 'user-about', class: 'is-hidden'} do |f| %>
<div class="field">
<%= f.text_area :about, autofocus: true, autocomplete: 'form', class: 'input'%>
</div>
<a class="toggle button is-light" aria-controls="user-about">Cancel</a>
<%= f.submit "Save", class: "button is-danger"%>
<% end %>
</div>
我只是公然切换到 turbolinks 函数标题的尝试没有按计划工作。
document.addEventListener("turbolinks:load", () => {
$('.toggle').on('click', (e) => {
e.stopPropagation();
e.preventDefault();
$('#' + e.target.getAttribute('aria-controls')).toggleClass('is-hidden');
})
});
非常感谢有关如何将此功能迁移到 Rails 6.1 的任何帮助。
解决方案
您的app/views/layouts/application.html.erbdefer: true
中添加了吗?
这允许在运行 Javascript 之前等待 DOM 完全加载。
<head>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload', defer: true %>
</head>
推荐阅读
- javascript - 如何使用 Redux Promise 中间件链接操作?
- dart - 在flutter中创建一个1000*1000的网格
- node.js - 使用 Twilio API 使用错误日志
- css - 移动设备上纯导航菜单背景的 CSS 代码
- bash - 如何自动化 helm 包 -- 在 bash 中以非交互方式签名
- java - 正确使用 Java 接口
- javascript - 如何创建一个新的对象数组表单对象而不重复?(ES6)
- azure-active-directory - 使用委派权限和 Microsoft Graph 自动创建用户/驱动器
- go - 如何将传递参数的值记录到函数中?
- c# - 在 .NET 中创建一种方法来确定 PDF 上的 X、Y 位置以进行打印