Jquery coffeescript没有';t更新dom元素

Jquery coffeescript没有';t更新dom元素,jquery,ruby-on-rails,coffeescript,Jquery,Ruby On Rails,Coffeescript,我对咖啡剧本还不熟悉,我提出了一个与活动绑定的问题。 我有一个div,它是通过ajax更新的,然后我希望在返回的部分上定义一些额外的jquery事件。 这些都是在rails 3.2上运行的。 my js.erb返回此部分罚款: $('#top_box').empty() $('#top_box').append('<%= escape_javascript(render :partial => 'form') %>') 当我在js.erb文件中添加上述行时,一切正常,但我想看

我对咖啡剧本还不熟悉,我提出了一个与活动绑定的问题。 我有一个div,它是通过ajax更新的,然后我希望在返回的部分上定义一些额外的jquery事件。 这些都是在rails 3.2上运行的。 my js.erb返回此部分罚款:

$('#top_box').empty()
$('#top_box').append('<%= escape_javascript(render :partial => 'form') %>')
当我在js.erb文件中添加上述行时,一切正常,但我想看看如何在咖啡中实现这一点。所以,我把这句话翻译成咖啡,比如

$ ->
  $('#link_long').on 'click', ->
    $('#link_long').val("")
为coffee生成的js代码是

(function() {

 $(function() {
 return $('#link_long').on('click', function() {
 return $('#link_long').val("");
 });
 });

}).call(this); 

但《咖啡》的剧本从来都不起作用。有人能告诉我为什么吗?

这有点猜测,但您可能在附加部分之前绑定了事件
$(“#link_long”)
将找不到您的元素,因为它还不存在,所以不会发生任何事情。JS->CS翻译中的中断可能是将点击处理程序移动到它自己的
$->
回调中,我在这里猜,这个回调在包含
append
的回调之前运行。在任何情况下,拥有多个相互依赖的文档就绪处理程序都是自找麻烦

最明显的选择是追加后绑定:

$('#top_box').append('<%= escape_javascript(render :partial => 'form') %>')
$('#link_long').on 'click', -> $('#link_long').val("")

你说得对。但是,您的第一个代码建议不起作用,因为我无法将咖啡与常规JS混合使用。第二个建议很管用。谢谢
$('#top_box').append('<%= escape_javascript(render :partial => 'form') %>')
$('#link_long').on 'click', -> $('#link_long').val("")
$(document).on('click', '#link_long', -> $('#link_long').val(""))