javascript - 第一次编译后重现元素
问题描述
很抱歉有线标题,我无法用标题中的几句话解释这个问题。我是 javascript 的新手,我有问题。
我有一个用户标题,当用户添加数据时,应该用少量文本输入(名字,姓氏...)替换,标题会自动更改。然后,标题下方会出现一个编辑按钮。在我的代码中,当用户单击编辑按钮时,文本输入再次出现以更改数据。问题是,编辑按钮只能在第一次使用。然后我们再次保存数据,编辑按钮不再起作用。
据我所知,输入新数据后,服务器会用 html 更改标题。包含输入数据的新标题也有编辑按钮,新标题附带的新编辑按钮不适用于代码。
这是编辑按钮的代码:
events(){
$(".js-edit-name").on("click", this.openEditor.bind(this));
}
openEditor(){
this.body.find(".form-input, .form-submit").show("slow");
this.body.find(".form-block").removeClass("hidden");
this.body.find(".js-edit-name").addClass("hidden");
this.body.find(".js-cancel-name").removeClass("hidden");
}
这是编辑按钮的代码:
<div class="icon positive positive-inverse small js-edit-name">
<svg class="svg-inline--fa fa-pencil-alt fa-w-16" aria-hidden="true" data-prefix="fas" data-icon="pencil-alt" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg>…. </svg>
<!-- <i class="fas fa-pencil-alt"></i> -->
" edit"
我希望我能清楚地解释这个问题。任何人都可以帮助我。非常感谢
解决方案
你说你的编辑按钮被替换了,这意味着当旧按钮被删除时,它的附加事件将不再起作用。所以而不是:
$(".js-edit-name").on("click", this.openEditor.bind(this));
你应该做这个:
$(document.body).on('click', '.js-edit-name', this.openEditor.bind(this));
这将允许您的处理程序运行所有.js-edit-name
元素,无论它们何时附加到 dom。
推荐阅读
- ruby-on-rails - 如果返回true,Ruby停止迭代以防万一阻塞
- angular - 关于 .NET core API 和 Angular 中的图片上传和获取文件信息模型
- sql - 更新 XML 数据 SQL Server 中的 JSON 值
- gatsby - Gatsby JS-如何在 gatsbyjs 的头部内正确添加 html 注释?
- python - ScannerError:“config.yaml”中不允许映射值?
- python - 具有大量集群的 KMeans
- python - 根据另一个列表列表对列表列表进行排序
- javascript - 如何在电子 js 中使用语音识别
- reactjs - 频道消息:${this.cid} 尚未初始化。确保调用 .watch() 并等待它解决
- z3 - Z3Py 中的 TransitiveClosure 函数存在问题