2012-10-13 41 views
0

我在js.erb文件中添加了一個新元素,並試圖爲新添加的元素指定一個單擊事件。js.erb中的jQuery語法

這是我在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

事情應該是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(); 
}); 
+0

感謝您的及時回覆。但是我得到相同的語法錯誤 - 在文章 – hrz

+0

@ user1441662中顯示:該錯誤與我的答案中的代碼不匹配,它看起來像來自原始代碼的錯誤消息。 –

+0

再次感謝,是的,行號不匹配,但它指向此代碼中的$(this)用法。作爲參考,如果我刪除了這段代碼,其餘部分編譯得很好。 – hrz