javascript - 如果在特定页面上运行脚本 - rails

标签 javascript ruby-on-rails if-statement controller

在每次加载页面时运行 if 语句来检查我是否应该运行脚本是不是一个坏主意。例如,我有一个非常长的 javascript 文件,只需要在使用表单时运行。但目前在我的每个文件中我都包含了 document.addEventListener("turbolinks:load", function() 这意味着它在每次页面加载时运行。

在我的脚本中,我很想在文件的开头写一个 if 语句,如下所示:

document.addEventListener("turbolinks:load", function() {
  controller = $('body').data('controller')
  action = $('body').data('action')
  if controller == foo && action == bar 
    runScripts();
  else
    return;
  function runscripts() {
    ...

我对将 javascript 与 rails 结合使用还是有些陌生,所以我不知道其他方法。有什么建议么?

最佳答案

您可以使用controlleraction 名称限定布局的 body 元素。

<body class="<%= controller_name %> <%= action_name %>">
  <%= yield %>
</body>

现在通过使用我们添加到布局主体的类,我们可以限制页面的某些功能。

$(document).on("turbolinks:load", function() {
  if (!($(".foo.bar").length > 0)) {
    return;
  }
  //--- page specific js code after above condition ---
});

在这种情况下,一个小条件可以防止页面特定行为在不应触发的页面上被触发。

为了更清楚阅读 this

关于javascript - 如果在特定页面上运行脚本 - rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43107363/

相关文章:

Python PuLP "if"仅符合第一个条件。

javascript - 如何将CSS添加到动态创建的表

javascript - 访问 Node.js 中当前文件夹之外的文件

mysql - Rails Time to String - 要么忽略函数,要么随机行为

ruby-on-rails - 在 Rails 3.x 功能测试中使用 Capybara 的正确方法是什么?

bash - 在终端(bash)中粘贴正确的 if 语句(缩进为 '\t' )给出语法错误

ios - 编写这个多条件 If 语句的正确方法是什么?

javascript - 为什么 jQuery 代码片段在没有 IFrame 的情况下可以工作,但在有 IFrame 的情况下却不能?

javascript - 关于 0xFFFFFFFF ^ 97 Go 和 Javascript 有什么区别

ruby-on-rails - Rails、gmaps4rails 不适用于 https