我在app/assets/javascripts/media_preview_script.js
$(document).on('turbolinks:load', function() {
$("#cat").on('click', function() {
showBrowseInput()
})
})
function showBrowseInput () {
do stuff here
}
据说turbolinks:load
使这个脚本在第一页加载时附加,然后在此之后调用任何turbolinks,但它不会这样做。它仅在页面加载时加载,然后任何remote: true
调用返回事件未附加。这与我在我的应用程序中的任何脚本相同。
这是因为开头的$(document).on('turbolinks:load'...
,当我删除它时,如果我在<%= javascript_include_tag "file_name" %>
的视图表单中包含该文件,我不会在文档上获得双重附件,事件将会发生附加每个js调用或页面加载。所以我的问题是,javascript_include_tag是否添加了turbolinks函数?或者任何人都可以告诉我这里发生了什么。我正在使用rails 5.
布局/ application.html.erb
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
答案 0 :(得分:1)
我认为问题是remote: true
使得它与ajax一起工作。您可以使用以下代码处理所需的事件:
$('form').ajaxError(function(event, request, settings) {
// your code
})
$('form').bind('ajax:success', function(evt, data, status, xhr){
// your code
})
如https://stackoverflow.com/a/8956770/2162591
中所述更新:
我使用此解决方案的唯一问题是ajax:在页面完全刷新之前触发成功。我改用了这段代码:
$('form').bind('turbolinks:request-end', function(evt, data, status, xhr){
// your code
});