【问题标题】:Making jQuery .on() work with Rails 3使 jQuery .on() 与 Rails 3 一起工作
【发布时间】:2012-03-05 17:27:20
【问题描述】:

我正在构建一个 Rails 3 应用程序,并试图让 jQuery .on() 函数正常工作。它目前没有做任何事情。

在 assets/javascripts/v-application.js 中:

console.log('application');

$('body').on('click', function(){
  alert('test');
});

当应用程序加载时,控制台会显示“应用程序”(应该如此),但是当我点击正文时,不会触发任何警报。如果我将完全相同的 javascript 粘贴到控制台并单击正文,则会触发相应的警报。

如果我在浏览器中查看 v-application.js,它会显示该功能。

我正在使用最新版本的 jquery-rails (2.0.1) 和 rails (3.2.2)。这一切都在开发环境中。

Rails 不知道如何处理基本函数调用是怎么回事?这与资产管道有关吗?我怎样才能让它工作?

【问题讨论】:

  • 你有准备好的函数吗?
  • 不确定 Rails 不知道如何处理是什么意思,这与 Rails 关系不大。 JS控制台有什么东西吗?

标签: javascript jquery ruby-on-rails asset-pipeline


【解决方案1】:

我猜你没有准备好的函数。

$(function() {
  $('body').on('click', function(){
    alert('test');
  });
});

如果直接将代码粘贴在主JS文件中,做$('body')不会找到任何东西,因为在解释script标签时,body标签还没有被处理。将逻辑粘贴在 ready 函数中将等待整个文档被解析。

【讨论】:

  • 就是这样。我早些时候有一个现成的功能,但一直有其他问题,为了降低复杂性并隔离问题,我已经剥离了所有内容。当然,我给堆栈引入了一个新问题。
  • 啊,是的,引入一个问题来解决另一个问题是最糟糕的:P 很高兴提供帮助。
【解决方案2】:

您使用的是 jQuery 1.7.1 吗?那是 .on 出现的时候,之前有过问题。

jsFiddle 在这里:http://jsfiddle.net/LmC6x/

正如@loganfsmyth 所说,我建议使用 ready 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    相关资源
    最近更新 更多