【发布时间】:2021-08-13 02:34:45
【问题描述】:
尝试在单击带有远程 true 的链接时显示微调器,尝试了两种方式 使用 turbolinks:events 和 ajaxStart/ajaxStop 事件。 turboinks:load 事件已成功触发,但 :click 没有。 ajaxStart 和 ajaxStop 都不起作用。
使用 rails 6、turbolinks 5、webpacker。 链接正在以非常正常的方式生成 示例:
<%=link_to 'Documents', documents_path, remote: true %>
这段代码放在application.html.erb的<head> </head>
<script type="text/javascript">
$(document).on("turbolinks:load", function(){
alert('turbolinks load works');
//$(".sk-cube-grid").hide();
});
$(document).on("turbolinks:click", function(){
alert('this doesnt work');
//$(".sk-cube-grid").show();
});
</script>
使用 ajaxStart/ajaxStop 的代码也可以放在 application.html.erb 中
$(document).ajaxStart(function(){
alert('started ajax - doesnt work');
});
$(document).ajaxStop(function(){
alert('stopped ajax - doesnt work');
})
编辑
将事件处理更改为以下内容:
var page_loaded = function() {
$(".sk-cube-grid").hide();
};
$(document).on("read page:load", page_loaded);
$(document).on("ajax:send", "a", function(xhr){
$('.sk-cube-grid ').show()
}).on("ajax:complete", "a", function(data, status, xhr) {
$(".sk-cube-grid").hide();
});
此代码在 ajax:starts 时显示().sk-cube-grid,但在 :complete 或 :success 时不隐藏。
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax turbolinks-5