首页 > 解决方案 > Javascript 刷新/重新初始化 DOM

问题描述

在我的网站上,我有这样的东西:

$( document ).ready(function() {
  $('classname').on("click", function(e){
    // do stuff...
  });
});

然后在不重新加载页面的情况下操作 dom。也许添加了一些带有 class="classname" 的新元素。对于这些元素,不会触发 click 事件。有没有办法在不重新加载页面的情况下为 javascript 重新初始化 dom?在 jquery 中,类似$.reinit()?

以防万一,dom 操作是通过<%= j render partial: '...' %>update.js.erb 文件中包含的 rails 完成的。

基本上我正在寻找一种方法来告诉 dom 有一个新的/更新的元素。

标签: javascriptruby-on-railsdompage-refresh

解决方案


我会将 eventListener 添加到文档中,然后检查单击的元素是否具有所需的类。在普通的 JS 中,它看起来像:

document.addEventListener("click", event => {
  if(event.target.classList.contains("classname")) {
    // do stuff...
  }
});

这样一来,添加到 DOM 的新元素就不会出现问题。


推荐阅读