jQuery 'on' 函数应该捕获将来创建的元素的事件,但在我的代码中,除非该项目已经创建,否则它似乎不起作用。这是失败的代码:
<!doctype html>
<html>
<head>
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(function () {
$('#div1').on('click', function(e) {
$('#div2').html('<div id="div3">Now Click Me!</div>');
});
$('#div3').on('click', function(e) { alert('OLA!'); });
});
</script>
</head>
<body>
<div id='div1' style='border:black 1px solid; background:yellow'>CLICK ME</div>
<div id='div2' />
</body>
</html>
单击“div2”会创建“div3”,但随后单击“div3”不会执行任何操作。另一方面,如果我将 javascript 代码更改为如下所示:
$(function () {
$('#div1').on('click', function(e) {
$('#div2').html('<div id="div3">Now Click Me!</div>');
$('#div3').on('click', function(e) { alert('OLA!'); });
});
});
它有效,但它有效,因为在添加 div3 元素之后没有声明“div3”的事件处理程序。也许我误解了“on”应该如何工作?