【发布时间】:2017-06-14 18:27:53
【问题描述】:
$(document).ready(function () {
$('.add-button').on('click', function () {
$('.alert-button').after('<button type="button" class="alert-button">Click me! </button><br>');
});
$('.alert-button').on('click', function () {
alert('HI!');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type='button' class="alert-button">Click me! </button><br>
<button type="button" class="add-button">Add button!</button>
嗨!我的“$('.alert-button').on('click'...”代码适用于页面加载时创建的元素,但不适用于动态创建的元素。
所以我有一个带有 2 个按钮的页面(请运行上面的 sn-p)。如果你点击“点击我!”警报“嗨!”出现。
但是当我复制“点击我!”通过按“添加按钮”按钮,单击重复的“点击我!”不产生警报“嗨!” (虽然它也有“.alert-button”类)。
我想看到警报“嗨!”当我点击任何“点击我!”按钮。
我做错了什么?:)
【问题讨论】:
-
jsfiddle.net/fb3m2mex 是您要找的。span>
-
@maxshuty - 是的,确实如此!我在哪里可以阅读相关文档?我真的不明白事件处理程序在 js 中是如何工作的......
-
api.jquery.com/on 是一个好的开始。很明显,这是我们在这里做的 jQuery。基本上我认为你的困惑是你的处理程序适用于新元素,但实际上它只适用于页面上已经存在的元素,而不是新创建的元素。 :)
-
处理程序不能处理 HTML 字符串。您需要正式创建元素(通过
document.createElement()),然后您可以将处理程序绑定到它。 -
@SergejFomin 见learn.jquery.com 了解一些见解
标签: javascript jquery dynamic event-handling