在jQuery中将live()变成on()

我的应用程序已动态添加了下拉列表。用户可以根据需要添加任意数量。

传统上,我使用jQuery的live()方法来检测何时change()编辑以下Dropdowns之一:

$('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已加载并正在运行,等等。错误日志中没有错误。

我究竟做错了什么?谢谢!

回答:

on文档的状态(粗体)):

事件处理程序仅绑定到当前选定的元素。在您的代码调用时,它们必须存在于页面上.on()

等效于.live()类似

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

alert($(this).val());

});

尽管最好将事件处理程序绑定到尽可能靠近元素的位置,即绑定到层次结构中更靠近元素的位置,这样会更好。

在回答另一个问题时,我发现.live文档中也提到了这一点:

.live()就其后继者而言,重写该方法非常简单。这些是用于所有三个事件附件方法的等效调用的模板:

$(selector).live(events, data, handler);                // jQuery 1.3+

$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+

$(document).on(events, selector, data, handler); // jQuery 1.7+

以上是 在jQuery中将live()变成on() 的全部内容, 来源链接: utcz.com/qa/400702.html

回到顶部