Jquery Javascript在active_admin中不起作用

Jquery Javascript在active_admin中不起作用,jquery,ruby-on-rails,coffeescript,activeadmin,Jquery,Ruby On Rails,Coffeescript,Activeadmin,因此,我正在为ActiveAdmin表单构建一组降价帮助程序。到目前为止我只有斜体字 #form.html.erb # ... some form code <%= link_to "i", "#", :class => "btn", :id => "italics_button" %> <%= f.input :body %> # ... rest of form omitted 我相当自信这段代码是可以的,因为我从几个月前的一个项目中删除

因此,我正在为ActiveAdmin表单构建一组降价帮助程序。到目前为止我只有斜体字

#form.html.erb
# ... some form code
    <%= link_to "i", "#", :class => "btn", :id => "italics_button" %>
    <%= f.input :body %>
# ... rest of form omitted
我相当自信这段代码是可以的,因为我从几个月前的一个项目中删除了它,我在一个普通的非AA表单上做了同样的事情

我已经更新了初始值设定项以引入自定义javascript:

# active_admin.rb
# rest of file omitted
config.register_javascript 'posts.js.coffee'
最后,我可以在Active Admin的新帖子页面上看到,javascript文件被包含并编译


但是,似乎没有调用javascript事件。当我单击#斜体#按钮时,页面尝试跟随到“#”的链接,javascript不会运行。

一旦浏览器看到它,就会立即执行此操作:

$('#italics_button').click (event) ->
  event.preventDefault()
  wrapText('post_body', '*', '*')
您的CoffeeScript可能会加载到页面的
元素中,因此当您
$(“#italics_按钮”)时,DOM中可能不会有任何
#italics_按钮
。单击(…)
,因此不会绑定任何回调

您可以尝试通常的“文档准备就绪时运行”方法:

或者您可以使用“活动”处理程序:


如果在服务器将页面发送到浏览器后动态添加
#斜体按钮
,则后者将非常有用。

啊,我明白了。在我的另一个应用程序中,脚本从底部加载,因此元素已经存在,但在本例中,AA在呈现任何内容之前将其加载到顶部。@DVG:Right。无论如何,使用
$->
包装初始化内容是一个好主意,这样您就不必担心(Java | Coffee)脚本在页面中的位置。
$('#italics_button').click (event) ->
  event.preventDefault()
  wrapText('post_body', '*', '*')
$ ->
  $('#italics_button').click (event) ->
    event.preventDefault()
    wrapText('post_body', '*', '*')
$(document).on('click', '#italics_button', (event) ->
    event.preventDefault()
    wrapText('post_body', '*', '*')
)