gpt4 book ai didi

javascript - 单击使用 .html() 添加到页面的元素时出现问题

转载 作者:行者123 更新时间:2023-11-28 01:44:50 25 4
gpt4 key购买 nike

因此,我在单击由 jQuery 的 .html() 函数呈现的元素上的事件时遇到了问题。这是我正在测试的代码:

<html>
<head>
<title>Test</title>
<script type="text/javascript" src="static/jquery-2.0.3.min.js"></script>
</head>
<body>
<div id="content">
<input type="submit" name="loginButton" id="loginButtonID"/>
</div>
<script>
$('#loginButtonID').click(function() {
$('#content').html('<button name="loginButton" id="newPasswordID">New Button</button>')
});
$('#newPasswordID').on('click', function() {
alert("alert");
});
</script>
</body>
</html>

如您所见,一开始我使用 id="loginButtonID" 渲染一个按钮。我上面有 .click() 事件,该事件又通过 .html() 创建另一个按钮(因为 .text() 将仅返回该按钮的 HTML 代码),并使用 id="newPasswordID" ,对于该按钮,我有另一个事件 .on() ,因为它应该是(不是 .click()),但该事件不起作用。所以问题是:如何使 .on() 事件适用于第二个按钮?

谢谢。

最佳答案

问题是,当您尝试 Hook 事件时,#newPasswordID 元素不存在。。因此,由于当您执行 $("#newPasswordID") 时,它与任何内容都不匹配,因此不会设置任何处理程序。

您可以在渲染该元素后执行此操作,也可以将事件挂接到该元素所在的某个容器(类似于 #content)并使用事件委托(delegate):

$("#content").on("click", "#newPasswordID", function() {
// ...
});

由于这确实 Hook 了 #content 上的 click,但仅当事件经过与 #newPasswordID 匹配的元素时才会触发它,因此当您连接事件时,#newPasswordID 是否存在并不重要。

关于javascript - 单击使用 .html() 添加到页面的元素时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20459590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com