已替换DOM元素上的Rails Ajax事件



我有一个简单的Rails ujs应用程序,页面上有一些远程链接。

<%= link_to 'Test', posts_path, remote: true, id: 'test' %>

在我的js模板中,我用新的链接替换了这个链接。

$('#test').html('<%= j link_to "Test", posts_path, remote: true, id: "test" %>')

同时我需要听ajax:成功事件:

window.addEventListener("load", () => {
document.body.addEventListener("ajax:success", (event) => {
# => Expected to be fired on all success ajax calls, no matter partial dom manipulations
});
});

但问题是,这一事件从未发生过。因为它的目标元素被替换了。

即使从dom中删除了ajax的目标元素,我如何才能听到ajax:success?

我的代码并没有实际意义,但它的目的是以简单的方式演示现实世界中的问题。

当我有远程链接时,比如posts-show操作,我会为正常交互创建一个show.html.erb,然后也会创建一个show.js.erb,在那里我会针对我想要从远程链接更改/修改的元素,并使用escape javascript方法替换那里的html。它看起来有点像$('some element').html('<%= j render 'some_partial.html.erb'%>')。其中some_partial.html.erb将是被替换的元素的一部分。

转义Javascript

最新更新