0

我有一个简单的 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:success 事件:

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:success?

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

4

1 回答 1

0

当我有远程链接时,比如帖子显示操作,我会show.html.erb为正常交互创建一个,然后还创建一个show.js.erb在那里我将定位我想要从远程链接更改/修改的元素并使用转义 javascript方法来替换那里的html。它看起来像$('some element').html('<%= j render 'some_partial.html.erb'%>'). some_partial.html.erb被替换的元素的部分在哪里。

转义 Javascript

于 2021-01-04T18:33:23.183 回答