0

我想在页面加载时像下面这样运行 javascript。

$ ->
  $.getJSON '/memos.json', (data) ->
    $.each( data ), (key,memo)->
      $('#memos').append( "#{memo.title} #{memo.content}<br/>") 

但我只想在加载 'users/show.html.erb' 后运行它。视图如下

<div id="memos"></div>

我认为有两种方法可以做到这一点。一是指定加载的视图,二是指定控制器。

我不认为在 erb 文件上编写 javascript 是一个好主意。有没有办法实现它们?

谢谢。

4

1 回答 1

1

$ ->
    ..

在第一行,将被翻译为

$(function() {
  ...
});

这基本上是 JQuery 的简写

$(document).ready(function() {
  ...
});

这意味着该函数内部的脚本只有在 DOM 准备好后才会执行。

所以你可以将javascript保存到单独的文件中,比如说js/memos/index.js在你的视图中app/views/memo/index.html.erb' you would have the`并且在同一个文件中,你可以使用javascript include标签包含javascript。

javascript 只会在 DOM 准备好后执行,这意味着此时您已经拥有 div。

有关 JQuery 的更多信息ready http://api.jquery.com/ready/

于 2013-08-10T09:28:04.460 回答