jQuery on()事件未触发:点击add-to-db按钮无响应
问题分析与解决
是的,这完全是事件委托的问题。
原因:#add-to-db按钮并非页面初始化时就存在的DOM元素,它是通过#get-info的点击事件,用load()方法动态插入到#get-info-results中的。你原本直接给#add-to-db绑定点击事件的写法,只能作用于页面加载完成时已经存在的元素,动态生成的元素不会自动绑定这个事件。
解决方案:使用事件委托
把事件绑定到一个页面初始就存在的父元素上(优先选择离目标元素最近的父元素,比如#get-info-results,比绑定到document性能更优),通过指定目标选择器来触发事件:
修改custom.js中的第二个事件绑定代码:
// 绑定到动态元素的父容器#get-info-results $("#get-info-results").on("click", "#add-to-db", function() { $("#add-to-db-results").load("/add-results-to-db.php", { // 你的POST参数 }); });
原理:事件委托利用DOM的事件冒泡机制,父元素会监听所有子元素触发的点击事件,只要子元素匹配指定的选择器(这里是#add-to-db),就会执行对应的回调函数,不管子元素是初始存在还是后来动态生成的。
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

