javascript - 更新 ID 和 jQuery 事件处理程序时出现问题

标签 javascript jquery forms jquery-selectors

我正在尝试制作某种形式,但我被困在第三步。

我的下一个按钮确实有一个递增的 ID,如下所示:

$('#to-q-2').click(function (e) {
    e.preventDefault();
    $(this).attr("id", "to-q-3");
})

因此 id 已更新。 但是当我再次点击时:

$('#to-q-3').click(function(e) {
        e.preventDefault();
        alert('stop');
});

什么也没发生。我猜 jQuery 没有更新 DOM,但我不知道该怎么做。有什么线索吗?

最佳答案

您需要将 click 事件添加到 document 中,以便它可以查找在 click 事件初始绑定(bind)时不存在的新元素,这样您就可以可以为动态添加的元素添加点击事件。您可以使用以下方法执行此操作:

$(document).on('click', '#to-q-3', function() {...})

请参阅下面的工作示例:

$(document).on('click', '#to-q-2', function (e) {
    e.preventDefault();
    $(this).attr("id", "to-q-3");
});

$(document).on('click', '#to-q-3', function(e) {
  e.preventDefault();
  alert("stop");
});
#to-q-2 {
  color: red;
}

#to-q-3 {
  color: lime;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="to-q-2">Click this div</div>

关于javascript - 更新 ID 和 jQuery 事件处理程序时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54400526/

相关文章:

javascript - 无法读取未定义的属性 x

JavaScript:获取对象实例以包含扩展变量

javascript - 使用 jquery 进行 DRY 编程

Python Mechanize 错误 +

javascript - 为什么页面加载时设置的变量在 document.ready 范围内不可用?

javascript - 窗口加载完成后,内容仍在加载

jquery - 如何在Python Flask框架中将格式化数据渲染为html?

javascript - 滚动时固定标题

C# 2005 : Remove icon from the form's title bar

javascript - 多个下拉菜单的纯javascript显示/隐藏