我在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('...
... ^):
答案 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();
});