JQuery Ajax更新的Div内按钮点击无响应问题求助
解决动态生成按钮点击无响应的问题
嘿,我一眼就看出问题所在啦——你那些带.modif_prst类的按钮是通过AJAX动态加载到页面的,而你一开始用的$(".modif_prst").click()方法,只会给页面加载时就已经存在的元素绑定点击事件,动态生成的元素根本没享受到这个绑定,所以点击自然没反应。
解决方案:使用事件委托
我们可以把事件绑定到一个页面加载时就存在的父元素上(比如你的#upd_pr容器,或者更上层的document),然后委托它处理子元素的点击事件。这样不管子元素是一开始就有的,还是后来动态添加的,事件都能被触发。
修改你的jQuery代码里的点击事件部分:
// 替换原来的$(".modif_prst").click(...) $("#upd_pr").on('click', '.modif_prst', function () { const choix = confirm("voulez vous vraiment sauvegarder les modifications"); if (choix) { // 用closest('tr')代替parent().parent(),DOM结构变动时更健壮 const $row = $(this).closest('tr'); const idbn = $row.find('td:eq(0)').html(); const idprs = $row.find('td:eq(1)').html(); const trf = $row.find('td:eq(3)').html(); const opttr = $row.find('td:eq(4)').html(); console.log(idbn); console.log(idprs); console.log(trf); console.log(opttr); } });
额外小建议
- 优先用
closest('tr')代替连续的parent().parent():如果以后你的DOM结构有小改动(比如按钮外面多套了一层标签),closest依然能准确找到对应的行,而parent()链式调用就会失效,稳定性更强。 - 变量声明尽量用
const或let代替无关键字声明,避免全局变量污染,代码也更规范。
这样修改后,你点击动态生成的"Modifier"按钮应该就能正常触发事件,看到控制台的输出啦!
内容的提问来源于stack exchange,提问作者DINA TAKLIT
相关产品推荐
相关产品推荐

