【问题标题】:jquery $(document).ready not being called after submitjquery $(document).ready 提交后没有被调用
【发布时间】:2013-10-30 16:35:09
【问题描述】:

在 Ruby on Rails 4 应用程序中,我有一个使用 jQuery DatePicker 的表单(来自 jquery-ui-rails Gem。

所以我需要打电话

$('.datepicker').datepicker();

每次我的表单被渲染。

我从这个开始(在我的控制器特定的.js.coffee 文件中。)

$ -> 
    $('.datepicker').datepicker

直到我遇到 Turbolinks 问题并不得不更改为:

ready = ->
    $('.datepicker').datepicker();

$(document).ready = ready
$(document).on 'page:change', ready

但我在点击提交按钮后仍然遇到问题,并且出现一个(或多个)错误,因此重新渲染了表单,但没有调用任何处理程序(document.readydocument.on page:change)。

我已将此代码放入application.js

$(function(){
    console.log("application.js -> ready")
})

我可以在控制台中看到它正在被调用,但控制器特定的 .js 文件中定义的函数不是。

所有文件似乎都已正确加载(它们在<header> 部分中有一个<script> 行;并出现在Chrome 的Sources 选项卡中。

【问题讨论】:

  • 我不清楚上面的语法,但从 javascript/jquery 的角度来看,$(document).ready = ready 没有注册一个函数来调用 ready 事件,它破坏了你的 ready 函数应该调用来注册一个监听器。
  • @MikeEdwards,请将您的评论作为回复,以便我将其作为答案进行检查!我需要删除= 标志...

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


【解决方案1】:

我不清楚上面的语法,但从 javascript/jquery 的角度来看:

$(document).ready = ready

这不会注册一个函数来调用 ready 事件,它破坏了您应该调用来注册侦听器的 ready 函数。

【讨论】:

  • 为了清楚起见,将我的行改为:$(document).ready ready 解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 2011-01-24
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多