手动调用document.ready

时间:2013-07-06 02:50:05

标签: javascript ruby-on-rails javascript-events ruby-on-rails-4

有没有办法强制通过javascript触发事件document.ready?默认情况下,使用turbo links的新Rails 4默认会在切换页面时触发此事件。这会导致更多包含在$(function(){});中的“传统”jQuery代码出现问题。

我已经浏览了一下,并没有看到通过代码解决此事件的任何方法,这里的大多数答案提供了其他工作。

甚至可以通过常规的javascript代码使document.ready成为可能吗?

4 个答案:

答案 0 :(得分:3)

您使用的是jQuery吗?如果是,请尝试在代码末尾显式调用Jquery的$.ready();函数。这将强制所有 jQuery“ready”函数被调用,包括你自己和你正在使用的任何插件中的函数。

如果这不起作用,您可以尝试$(window).load();

如果这些都不起作用并且您正在使用某种类型的异步调用,那么您可能还需要先解决其他问题。祝你好运!

答案 1 :(得分:1)

我认为在没有对代码进行大的更改的情况下执行此操作的最简单方法是收听自定义事件而不是就绪,并在ready事件内部触发自定义事件。

答案 2 :(得分:1)

来自turbolinks documentation: 您必须使文档侦听其中一个turbolinks自定义页面事件,例如:

$(document).on('page:change', function() {
    // Your code
});

答案 3 :(得分:1)

最简单的解决方案:

插入您的Gemfile:

gem 'jquery-turbolinks', '~> 1.0.0'

将您的application.js插入:

//= require jquery.turbolinks

(不要忘记bundle update

如果您的coffescript代码中有以下内容,则会触发整页重新加载或在turbolinks处于活动状态时通过链接打开页面:

$ ->
   alert 'Hello World'

$ ->表示document.ready