【发布时间】:2011-12-22 17:08:51
【问题描述】:
我的应用程序已动态添加下拉菜单。用户可以根据需要添加任意数量。
我传统上使用 jQuery 的 live() 方法来检测这些下拉列表之一何时是 change()ed:
$('select[name^="income_type_"]').live('change', function() {
alert($(this).val());
});
从 jQuery 1.7 开始,我已将其更新为:
$('select[name^="income_type_"]').on('change', function() {
alert($(this).val());
});
查看文档,这应该是完全有效的(对吗?) - 但事件处理程序永远不会触发。当然,我已经确认 jQuery 1.7 已加载并运行等。错误日志中没有错误。
我做错了什么?谢谢!
【问题讨论】:
-
我知道这已经很晚了,但似乎 jQuery
live无论如何实际上都在使用on,因此在删除live之前可能还不需要重写遗留代码,我相信是 1.9。摘自 1.7.1 源代码:live: function( types, data, fn ) {jQuery( this.context ).on( types, this.selector, data, fn ); return this;}因此,如果没有升级到live已消失的版本,则可能不需要立即对遗留代码进行更新。对于 new 代码,建议使用on()代替。我只是认为这些信息可能会在某个阶段对其他人有所帮助。 -
请参阅Migration Examples,了解如何将
live更改为on。
标签: javascript jquery jquery-1.7