【发布时间】:2020-02-18 10:41:26
【问题描述】:
我正在尝试从外部文件加载 HTML。但是,这样做时,输入元素是不可交互的。我已经尝试过使用香草 JavaScript 无济于事,只是导入了 jQuery。我目前的进度如下:
我有一个带有静态元素和菜单栏的页面。单击菜单栏图标时,元素内容会通过 JS/JQ 更新。这是我用于加载视图的 HTML 和 jQuery:
settings.html:
<section class="settings">
<div class="container">
# some elements here
<div id="graph-settings" class="settings-card">
<i class="fa fa-chart-line fa-3x"></i><h1>Graph Settings</h1>
<p>Web Interface Refresh Rate</p>
<form>
<input type="text" name="graphInterval" id="graphInterval" placeholder="E.g. 2000">
</form>
</div>
# more elements here
</div>
</section>
jQuery:
$.get("./pages/settings.html", (data) => {
$("#main").append(data);
});
$(document).on("click", "#graphInterval", function() {
// do something...
console.log("test");
});
内容似乎已正确加载到页面中,但不可标记/不可交互(动态添加到 DOM 等)。但是,我的 jQuery 似乎没有找到 #graphInterval 元素,因为我没有从控制台获得日志输出。
任何让输入字段工作的方法都是一种解决方案。他们所需要的只是编辑和检索它的价值。稍后我将使用 JavaScript 添加按钮/与按钮交互,不会使用发布表单,因此表单没有“action=''”。
【问题讨论】:
-
您的动态元素的点击处理程序应该可以工作,前提是您必须在整个 DOM 中具有唯一 ID
-
所以您是说您的点击事件不适用于您动态添加的 div 或菜单?
-
id 是唯一的。确切地说,动态添加的元素不会触发点击事件。
-
动态 HTML 加载完成后需要重新初始化监听函数
-
@AravinthanK 不,你不知道。这就是委托事件处理程序的全部意义。
标签: javascript jquery dynamic-content