Javascript 使用Coffeescript将表行生成Rails中的链接
这与下面的问题有关,但为了与Rails4中的默认值具有可比性,我想使用coffeescript而不是javascript 起点是对前面问题的回答中提供的代码: 视图ERB代码包含具有以下代码的表格生成器:Javascript 使用Coffeescript将表行生成Rails中的链接,javascript,ruby-on-rails,coffeescript,Javascript,Ruby On Rails,Coffeescript,这与下面的问题有关,但为了与Rails4中的默认值具有可比性,我想使用coffeescript而不是javascript 起点是对前面问题的回答中提供的代码: 视图ERB代码包含具有以下代码的表格生成器: <% @songs.each do |song| %> <tr data-link="<%= edit_song_path(song) %>"> <td><%= song.Name %></td> &l
<% @songs.each do |song| %>
<tr data-link="<%= edit_song_path(song) %>">
<td><%= song.Name %></td>
<td><%= song.Group %></td>
</tr>
<% end %>
这是我对MarkBerry答案中javascript的翻译。我还尝试了其他建议,如window.location=$(this.data(“link”)
加载页面时,表格行不可单击。如果我将设置window.location
的操作替换为警报,则在加载页面时,而不是在用户单击表行时,会出现警报对话框
上述coffeescript代码是song.js.coffee文件中唯一的代码。我是否遗漏了需要围绕代码进行包装的内容
部分答案:在第一条注释中建议的原始coffeescript代码之前添加$->
,确实会使表格行可以选择一次。从其他阅读资料中,我相信美元符号变量已经成为jQuery的别名(关于Coffeescript的小书中的成语一章就是一个例子:)
不幸的是,加载页面后,可以选择一个表行,从而显示编辑页面,但如果用户使用浏览器上的“后退”按钮或返回页面的链接返回页面,则表行将不再可选
新的coffeescript代码是:
$ ->
$("tr[data-link]").click ->
window.location = this.dataset.link
以上代码是从javascript到coffeescript的正确翻译吗。我对这两种脚本语言都是新手
在Rails 4中使用coffeescript制作可点击的表格行有不同的答案吗
谢谢。是的,您发布的代码翻译正确。“”是一个很好的站点(尽管有一些bug报告),您可以使用它将JavaScript转换为CoffeeScript,反之亦然 我不确定为什么它不起作用,因为您说,由于@muistooshort建议后发布的代码应该起作用,表行变得“不可读取”。我之所以这样说,是因为您没有在这里操作DOM,在文档准备就绪时(这是
$->
),您已经使用数据链接
属性将click事件附加到表行,这应该可以正常工作,因为后退按钮和完整页面刷新会重新加载DOM
对于动态添加的内容(或者在前面提到的DOM操作的情况下),您需要使用jQuery方法(替换旧方法)通过DOM树中的父元素或元素将事件绑定到“选择器”。请阅读jQuery的“”方法,它不仅对本期文章有用,而且对将来的事件处理也很有用
但是,对于此问题,您可以尝试以下方法:
$ ->
$(document).on 'click', 'tr[data-link]', (evt) ->
window.location = this.dataset.link
希望这有帮助
$ ->
$(document).on 'click', 'tr[data-link]', (evt) ->
window.location = this.dataset.link