javascript - Jquery第一次没有在Rail 6页面上运行
问题描述
我有一个在 Rails 6 应用程序中运行的 jquery 函数。当用户更改选择下拉列表中的值时,jquery 会切换几个 div 以显示或隐藏它们。我遇到的问题是第一次访问页面时 jquery 没有运行。如果我更改字段,则不会发生任何事情。如果我刷新页面,则 jquery 开始正常工作。我是否缺少使 jquery 第一次运行的东西?
这是jQuery;
$(function() {
$("#costing_type").change(function() {
$("#fixed_cost_div").toggle($("#costing_type").val() == "1");
$("#markup_percent_div").toggle($("#costing_type").val() == "2");
return false;
});
});
它在一个名为 test2 的文件中,这是我在 application.js 文件中所要求的
import 'bootstrap'
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
// require("packs/custom")
// require("packs/posts.js")
require("jquery")
// require("jquery_ujs")
// require("custom/test")
require("custom/test2")
layouts/application.html.erb 里面有 javascript 标签
<head>
<title>Test</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
<script src="https://kit.fontawesome.com/c124a87536.js" crossorigin="anonymous"></script>
</head>
我不知道为什么它第一次不起作用。谢谢你的帮助!
解决方案
您似乎正在使用涡轮链接。然后不再在每次页面更改时触发 jquery 加载事件。像这样使用某事:
document.addEventListener("turbolinks:load", function() {
$("#costing_type").change(function() {
$("#fixed_cost_div").toggle($("#costing_type").val() == "1");
$("#markup_percent_div").toggle($("#costing_type").val() == "2");
return false;
});
});
如果您不知道它的作用,或者删除 turbolinks。
推荐阅读
- heroku - 可以在heroku上设置NATS协议吗?
- java - 尝试从 testng.xml 运行我的测试时出现 NullPointerException
- python - TypeError: '>' 在 'method' 和 'int' 的实例之间不支持,但在这种情况下,'method' 是一个数字
- python - 我收到一个错误,一个类没有已定义的成员
- django - Django ValueError:不能为“”使用查询集:为“用户”使用查询集
- python - 使用 Python3 在 Sage 中绘制欧拉方法的图形
- java - 写锁优先访问java readWrite锁中的关键区域?
- http - 如何使用 Postman 从 WiFi 路由器正确返回 SessionID
- java - 在 ItemProcessor 中跳过异常会导致二次行为
- api - 使用 Facebook Graph API 从帖子评论中获取用户