js.erb中的jQuery语法

时间:2012-10-13 19:33:48

标签: jquery ruby-on-rails erb

我在js.erb文件中添加了一个新元素,我试图将click事件分配给新添加的元素。

这就是我在js.erb中所拥有的:

$("#<%= linkid %>").on("click", '<%= j function(event) {$(this).parent().next().toggle(); event.preventDefault();}) %>' );

我使用“$”编写函数时出现语法错误。这是什么修复?如果我必须将此函数放在此文件中的var中,我该如何操作?一般来说,有更好的方法吗?

更新:错误消息

/create.js.erb:7: syntax error, unexpected $undefined
....append= ( j function(event) {$(this).parent().next().toggle...
...                               ^
/create.js.erb:7: syntax error, unexpected ')', expecting keyword_end
...(); event.preventDefault();}) );@output_buffer.safe_concat('...
...                               ^):

1 个答案:

答案 0 :(得分:1)

<%= ... %>内的事物应该是Ruby表达式,而不是JavaScript。这样:

<%= j function(event) {$(this).parent().next().toggle(); event.preventDefault();}) %>

根本不需要ERB,这只是普通的旧JavaScript。此外,jQuery的$(...).on('click', ...)的第二个参数应该是JavaScript函数,而不是JavaScript字符串。你想要这个:

$("#<%= linkid %>").on("click", function(event) {
    $(this).parent().next().toggle();
    event.preventDefault();
});