【问题标题】:In Rails, jQuery objects disappear after pageload, reappear on refresh在 Rails 中,jQuery 对象在页面加载后消失,刷新时重新出现
【发布时间】:2017-04-03 14:14:12
【问题描述】:

我有一些自定义 jQuery 代码为业务优化机器创建前端。

simutronX.js

$(function(){
    $("#slider_constraint_a").slider({
    orientation: "vertical",
    range: true,
    values: [17, 67],
    slide: function(event, ui) {
      $("#constraint_a").val(ui.values[0] + " - " + ui.values[1]);
      }
    });
    $("#constraint_a").val($("#slider_constraint_a").slider("values", 0) +
      " - " + $("#slider_constraint_a").slider("values", 1));

    ...

    $("#slider_constraint_e").slider({
    orientation: "vertical",
    range: true,
    values: [17, 67],
    slide: function(event, ui) {
      $("#constraint_e").val( ui.values[0] + " - " + ui.values[1] );
      }
    });
    $("#constraint_e").val( $("#slider_constraint_e").slider("values", 0) +
      " - " + $("#slider_constraint_e").slider("values", 1));
});

当页面加载时,约束滑块会非常短暂地出现,然后消失。刷新时,这些项目会重新出现。我已经按照建议 here 安装了 jquery-turbolinks gem 并将其添加到我的 application.js 文件中,然后预编译资产并重新启动服务器。

application.js

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require jquery-ui

这似乎没有帮助。 jquery-turbolinks readme 中列出了类似的问题(例如双重加载...),但我的代码似乎没有列出任何问题。

还有什么建议吗?

【问题讨论】:

  • 如果您使用的是 Turbolinks 5,您可能希望避免使用 jquery.turbolinks。 Turbolinks 为第 5 版重写,许多语法发生了变化。如果您打算使用 gem github.com/kossnocorp/jquery.turbolinks/issues/61,这里有一个关于兼容性文件的问题。

标签: javascript jquery ruby-on-rails ruby-on-rails-5 turbolinks


【解决方案1】:

我以前遇到过这个问题。解决方案是在你的 js 文件中使用 change 操作而不是 load 操作来包围 Jquery 代码

 $(document).on('page:change', function(){

【讨论】:

  • 这不起作用,但它确实为我指明了正确的方向。我现在正在使用类似的$(document).on('turbolinks:load', function(){,这是您的解决方案和我在这里找到的东西的组合:github.com/turbolinks/turbolinks/blob/master/README.md
  • 所以我想我帮助了一点哈。抱歉,帮不了人。
  • 这足以帮助我解决我自己需要更长的时间才能解决的问题。另外,现在解决方案可以帮助将来遇到此问题的任何人。
猜你喜欢
  • 1970-01-01
  • 2015-11-17
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多