Rails4jquery函数只工作一次,不在重载时工作

Rails 4 jquery function works once, not on reload

本文关键字:工作 一次 重载 函数 Rails4jquery      更新时间:2023-09-26

在Rails 4.2.5中工作,我的application.js文件:

$(document).ready(function() {
$("#property_selection #properties").click(function() {
    var url = window.location.href
            .replace(/'/?$|('?|&)current_prop_id=[^?&]+/g, "")
        + "?current_prop_id="
            + $("#properties option:selected").val();
    window.location.href = url;
    })
});

也就是说,当我选择一个property_id时,我想转到同一个URL,加上"?current'_prop'_id=",加上ID。

这在我第一次登录时起作用。当我参观一条像然而,http://localhost:3000/foo并没有。正在刷新页面使其再次工作。

然后我将$(document).ready行更改为$(document).on('page:load', ...,(根据我读到的内容此处(,但这只是扭转了问题。现在它第一次工作,但是而不是第二个。

将这些代码拖放到静态文件中效果很好。

我现在已经在application.js中定义了这两个,这在很多级别,但我不知道该怎么做才能使函数在其中工作两种情况都不同。有人有什么建议吗?谢谢

我以前使用jquery函数加载图像时遇到了同样的问题。Turbolinks加载页面的原因。您与页面绑定的某些节点已不存在。

我用gem 'jquery-turbolinks'来解决我的问题。看看这里的宝石,如果它能解决你的问题,试试看。祝你好运,伙计。

我通常会做一些类似(咖啡脚本语法(的事情:

$ ->
    do_on_load()
    $(window).bind('page:change', do_on_load)

或javascript:

$(document).ready(function() {
  do_on_load();
  $(window).bind('page:change', do_on_load);
}

其中do_on_load((是包含应该执行的指令的函数。无论如何,这是由涡轮链接+jquery引起的,这真的很烦人。更改它们在应用程序中的加载顺序。js也会影响这种行为。我建议重新考虑使用涡轮链接。。。它会让你头疼。祝你好运