在 Rails 应用程序中,我们如何处理动态出现的 DOM?

In Rails applications, how do we deal with the DOM that appears dynamically?

提问人:Invincible_Pain 提问时间:8/20/2023 更新时间:8/21/2023 访问量:35

问:

所以大家都知道,JS 的一个技巧是,比如说,我们为这个页面上的所有按钮绑定了一个点击事件:

$(".btn").click(...)

<button class='btn'>A</button>
<button class='btn'>B</button>

然后突然通过JQuery追加或AJAX将按钮C添加到页面中,然后存在按钮C无法绑定该事件的问题,您可能需要在.js.erb左右执行此操作。

这很尴尬,我想知道有没有更好的方法来处理这个问题?谢谢

jQuery Ruby-on-Rails AJAX

评论


答:

0赞 Cjmarkham 8/20/2023 #1

使用 on 函数,我们可以将该事件委托给元素和在初始 DOM 加载后添加的任何元素。

$('body').on('click', '.btn', () => {
  ...
})

委托事件处理程序的优点是它们可以处理 来自添加到文档的后代元素的事件 稍后的时间

-1赞 Allacassar 8/21/2023 #2

在添加新按钮时,应将其与新按钮进行额外的绑定。 以下是对这个问题的讨论:动态创建的元素上的事件绑定?