【问题标题】:Manually calling document.ready手动调用 document.ready
【发布时间】:2013-07-06 02:50:04
【问题描述】:
有没有办法通过 Javascript 强制事件 document.ready 触发?新的 Rails 4 默认默认使用 turbo links 会在切换页面时终止触发此事件。这会导致包装在$(function(){}); 中的更多“传统”jQuery 代码出现问题。
我环顾四周,没有看到任何通过代码触发此事件的方法,这里的大多数答案都提供了其他解决方法。
那么甚至可以通过常规的 Javascript 代码使 document.ready 触发吗?
【问题讨论】:
标签:
javascript
ruby-on-rails
ruby-on-rails-4
dom-events
【解决方案1】:
那么你在使用 jQuery 吗?如果是,请尝试在代码末尾显式调用 Jquery 的 $.ready(); 函数。这将强制调用 所有 jQuery“就绪”函数,包括你自己的和你正在使用的任何插件中的函数。
如果这不起作用,您可以尝试$(window).load();。
如果这些都不起作用并且您正在使用某种类型的异步调用,那么您可能还有其他一些问题需要先解决。祝你好运!
【解决方案2】:
我认为在不对代码进行重大更改的情况下执行此操作的最简单方法是侦听自定义事件而不是就绪,并在就绪事件中触发自定义事件。
【解决方案3】:
最简单的解决方案:
将您的 Gemfile 插入:
gem 'jquery-turbolinks', '~> 1.0.0'
插入你的 application.js 这个:
//= require jquery.turbolinks
(别忘了bundle update)
如果您的 coffescript 代码中有以下内容,它将在 turbolinks 处于活动状态时触发整个页面重新加载或通过链接打开页面:
$ ->
alert 'Hello World'
($ -> 表示document.ready)
【解决方案4】:
来自turbolinks documentation:
您必须让文档监听 turbolinks 自定义页面事件之一,例如:
$(document).on('page:change', function() {
// Your code
});