jquery - 添加由 jquery append 方法生成的事件
问题描述
我有一个关于附加事件的问题。
第一:文件准备好后,我做了ajax并成功
第二:ajax成功后,我将一些代码附加到body标签
第三:我想附上在第二个创建的事件。
下面是我的代码
<html>
<head>
<meta charset="utf-8" />
<title></title>
<!--jquery, cookie import-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
$.ajax({
url: '/phone',
type:'post',
success:function(){
$('body').append('<div class="test">hi</div>')
}
})
})
$('.test').on('click',example)
function example(){
alert('success');
}
</script>
</body>
</html>
在我运行这个之后,当我单击 div 时,没有弹出警报..
有没有人可以解释为什么这不起作用?
解决方案
是的 - 这是合乎逻辑的。您将事件绑定到尚不存在的元素。它没有未来意识;它不会将自己附加到将来出现的与选择器匹配的任何元素上。
相反,委托事件。对于事件来说,这通常是一种很好的做法,除了涉及单个元素或您在绑定事件时确定存在的元素的简单情况。
$('body').on('click', '.test', example);
function example() {
alert('success');
}
推荐阅读
- php - Laravel whereIn 不返回结果
- angular - 如何在 Angular 中使用按钮作为表单控件?
- javascript - 单击时显示特定的 php 数据
- javascript - 有没有办法将特定单词超链接到 javascript 中的另一个 URL?
- odoo - 是否可以通过模型 2 中的按钮控制/更改模型 1 中状态栏的状态?(奥多 13)
- php - php 检查特定时区是否已过 24 小时
- c++ - 以下是什么:C++ 多态中的 int className(baseClassName** obj,int a)?
- r - 无法通过 RStudio Server 在 Linux 上安装 SingleCellExperiment R 包
- javascript - 切换密码可见性眼睛时出错,未捕获的 ReferenceError:代码中分配的左侧无效
- javascript - 如何从 merge-images.js 返回一个承诺的纯值?