关于点击事件的Coffeescript没有解雇?

时间:2017-06-24 20:53:30

标签: javascript ruby-on-rails coffeescript

我正在开发一个Ruby on Rails项目,在我的视图中单击link_to元素应该在我的CoffeeScript中触发一个方法,但输出永远不会打印!

这是我的HTML的相关部分(链接有效):

<%= link_to 'Start Quiz!', {:controller => :pages, :action => :start_quiz}, :id => 'btn btn-primary btn-lg', :method => :get %>

这是我的ActionCable CoffeeScript文件中的方法:

App.quiz_data = App.cable.subscriptions.create "QuizDataChannel",
  connected: ->
    console.log "[AC] on click handler called?"
    $(document).on('turbolinks:load', -> $('btn btn-primary btn-lg').on 'click', -> console.log "[AC] on click handler called!")

我的控制台在点击处理程序中读取&#34; [AC],名为?&#34;但即便在我点击链接后,别无其他。

我一直在谷歌搜索,一些帖子表明问题可能与turbolinks有关。上面的代码已经反映了我尝试过的几个解决方案中的两个(在链接中指定get方法,用$(document).on('turbolinks:load', -> ...)包含事件处理程序),没有一个解决方案适合我。我是Rails的初学者,对CoffeeScript一无所知,所以任何帮助都会非常感激。

修改

添加id选择器#并删除事件处理程序中link_to元素和$(document).on('turbolinks:load', -> ...)中的get方法 - 它最终有效! :d

现在

HTML元素:

<%= link_to 'Start Quiz!', {:controller => :pages, :action => :start_quiz}, :class => 'btn btn-primary btn-lg', :id => 'start_quiz_button' %>
现在

CoffeeScript文件:

App.quiz_data = App.cable.subscriptions.create "QuizDataChannel",
  connected: ->
    console.log "[AC] on click handler called?"
    $('#start_quiz_button').on 'click', -> console.log "[AC] on click handler called!"

谢谢! :)

1 个答案:

答案 0 :(得分:1)

1)您需要将您的ID更改为有效的ID(请阅读此post),例如start_quizz_button

2)使用id-selector #

$(document).on('turbolinks:load', -> $('#start_quizz_button').on 'click', -> console.log "[AC] on click handler called!")