【问题标题】:jQuery syntax in js.erbjs.erb 中的 jQuery 语法
【发布时间】:2012-10-13 19:33:48
【问题描述】:

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

这就是我在 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('...
...                               ^):

【问题讨论】:

    标签: jquery ruby-on-rails erb


    【解决方案1】:

    &lt;%= ... %&gt; 中的内容应该是 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();
    });
    

    【讨论】:

    • 感谢您的及时回复。但是我得到了相同的语法错误 - 显示在帖子中
    • @user1441662:该错误与我的答案中的代码不匹配,它看起来像是来自原始代码的错误消息。
    • 再次感谢,是的,行号不匹配,但它指向此代码中的 $(this) 用法。作为参考,如果我删除了这段代码,其余的编译得很好。
    • 是的,我复制了确切的代码并将其粘贴到我的 js.erb 文件中,我只是碰巧在它之前有几行,因此行号不匹配 - 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多