首页 >web前端 >js教程 >为什么我的 jQuery `on('change')` 不适用于动态添加的下拉菜单?

为什么我的 jQuery `on('change')` 不适用于动态添加的下拉菜单?

Barbara Streisand
Barbara Streisand原创
2024-12-15 13:43:12379浏览

Why Doesn't My jQuery `on('change')` Work on Dynamically Added Dropdowns?

将 jQuery 的 live() 转换为 on():出了什么问题?

在 jQuery 中,live() 方法已被替换为on() 用于事件处理。然而,尽管迁移到 jQuery 1.7 并使用 on('change') 来检测动态添加的下拉列表中的更改,事件处理程序仍然处于不活动状态。

解决方案

主要区别在于 on() 处理事件委托的方式。与 live() 将事件处理程序附加到动态创建的元素不同,on() 仅将处理程序绑定到调用时存在的元素。

要实现与 live() 相同的功能,on( ) 语法应修改如下:

$(document.body).on('change', 'select[name^="income_type_"]', function() {
    alert($(this).val());
});

这将事件处理程序绑定到文档正文,这确保即使对于添加的元素也附加了处理程序

或者,为了更有针对性的事件处理,请考虑将处理程序附加到最接近的可能祖先元素。

jQuery 文档明确指出 on() 的行为与其前身不同,强调该事件处理程序仅绑定到现有元素。这解释了为什么 on('change') 的初始实现没有触发。

以上是为什么我的 jQuery `on('change')` 不适用于动态添加的下拉菜单?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn