javascript - jquery 不能使用动态添加的元素
问题描述
在我的 HTML 正文中,我有以下代码:
$.post('/GetManufacturers',(Data)=> {
Data.Manufacturers.forEach(i => {
$('#Manufacturers').append(`<input type="radio" name="Manufacturers" id="MF" value="${i}"> <label>${i}</label><br>`);
});
});
$('input[name="Manufacturers"]').change(()=>{
console.log($("input[type='radio'][name='Manufacturers']:checked").val());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>Manufacturers:</label>
<div id="Manufacturers"></div>
它完美地添加了单选按钮并且它们工作正常,但是当我选择一个单选按钮时 .change() 根本没有响应。我把它放在文件里面和外面准备好或者不起作用。
解决方案
因为它们是动态添加的,所以您的选择器不会拾取它们,因为您的选择器基本上已经查询了 dom。
你必须改变
$('input[name="Manufacturers"]').change(()=>{
console.log($("input[type='radio'][name='Manufacturers']:checked").val());
})
至
$('body').on('change', 'input[name="Manufacturers"]', () => {
console.log($("input[type='radio'][name='Manufacturers']:checked").val();
})
推荐阅读
- docker - 使用 Docker 的 Mysql 集群:错误 708 '没有更多属性元数据记录(增加 MaxNoOfAttributes)'
- javascript - 如何在使用JAVA加密的nodejs中解密
- node.js - 如何从我的 NODEJS GAE APP 调用外部 Web 服务
- javascript - HTML5 Audio tag no sound safari Desktop 和 IOS
- java - 如何正确创建复选框数组?或者我的错误是什么?
- excel - Excel:根据特定值将多行插入最后一行
- javascript - 在 JavaScript 选定元素上挂钩 jQuery 方法
- laravel - 传递给 App\Http\Controllers\Auth\LoginController::attemptLogin() 的参数 1 必须是 App\Http\Controllers\Auth\Request 的实例
- high-availability - 如何恢复 Stacked control plane 和 etcd 节点的 HA 集群
- javascript - 使用 $.Ajax 调用 UBER api