将 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中文网其他相关文章!