Javascript 将.on()与动态添加的元素一起使用时出现问题

Javascript 将.on()与动态添加的元素一起使用时出现问题,javascript,jquery,jquery-on,Javascript,Jquery,Jquery On,我读到有人不赞成这样做,我应该改用上的。但是.on似乎不适用于添加到DOM中的元素 我的脚本添加了一个包含任意数量文本框的表(input type=“text”),并且我希望在这些文本框中的内容发生更改时运行一些脚本 这是我的部分代码vendorsPopUp引用包含我的表的div $('input', vendorsPopUp).on('change', function (e) { alert($(this).attr('class')); }); 但是当文本框中的内容更改时,此代码

我读到有人不赞成这样做,我应该改用上的
。但是
.on
似乎不适用于添加到DOM中的元素

我的脚本添加了一个包含任意数量文本框的表(
input type=“text”
),并且我希望在这些文本框中的内容发生更改时运行一些脚本

这是我的部分代码
vendorsPopUp
引用包含我的表的div

$('input', vendorsPopUp).on('change', function (e) {
    alert($(this).attr('class'));
});

但是当文本框中的内容更改时,此代码不会运行。

应该是这样的

$(vendorsPopUp).on('change', 'input', function (e) {
   alert($(this).attr('class'));
});

对表、正文或div调用()而不是对没有子元素的输入。on()使用父容器监视其下的任何元素以获取事件,而不仅仅是绑定时发现的少数元素;这就是为什么它需要额外的选择器参数。现在,您在传统模式下使用on()。重复了许多其他问题。我现在就去找一个副本。@dandavis不是传统模式,而是直接绑定模式。直接绑定到元素没有什么遗留问题。有人投票否决了我,因为这个问题已经被提出了?我做了很多搜索。对不起,我只是找不到正确的数据。如果它作为副本关闭,那就好了。但是投票被否决的人看起来像个混蛋。legacy可能是贬义词,但是没有授权的on()没有任何好处,而且它可能会误导那些期待子选择器的程序员。如果没有委派,您还可以使用更具语义的.change()处理程序。这是正确的答案。它清晰简洁,并且有我需要的代码。如果问题以重复的形式结束就可以了。但我不知道为什么有些人如此热衷于否决投票。尤其是那些不加评论就这么做的人。