JQuery "on"未捕获事件

标签 jquery events

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”应该如何工作?

最佳答案

试试这个...

$('body').on('click', '#div3', function(e) { alert('OLA!'); });

第一个选择器必须是事件将冒泡到的公共(public)祖先元素。

关于JQuery "on"未捕获事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12811190/

相关文章:

html - 根据不同的选择选项更改选择框中的选项

javascript - jQuery Popup 在主浏览器窗口中打开一个新选项卡

javascript - div 不滚动时获取回调

unit-testing - 如何测试 Vue 组件是否响应 $root 发出的事件?

javascript - contentEditable span - PreventDefault 不起作用

javascript - 使用进度事件监听器覆盖 Backbone 同步

Javascript document.contains 不适用于 IE11

php - WordPress 插件短代码始终显示在顶部

javascript - 使用 JQUERY 解析 XML - 排序到两个数组中

c# - 为什么我的自定义 OnLoaded 事件会收到 "Object reference not set to an instance of an object"?