2014-09-30 52 views
-1

我读到.live()已被弃用,我应该使用.on来代替。但.on似乎不适用于添加到DOM的元素。使用.on()动态添加元素时出现问题

我的脚本添加了一个包含任意数量文本框(input type="text")的表格,并且我想在任何文本框中的内容发生更改时运行一些脚本。

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

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

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

+0

你打电话(),它没有子元素。 on()使用一个父容器来监视事件下的任何元素,而不仅仅是绑定时发现的几个元素;这就是为什么它需要额外的选择器参数。现在,您在传统模式下使用on()。 – dandavis 2014-09-30 22:16:37

+1

重复许多其他问题。我现在会去找一个重复的。 – jfriend00 2014-09-30 22:18:28

+1

@dandavis不是传统模式,处于直接绑定模式。没有任何关于直接绑定到元素的遗留问题。 – 2014-09-30 22:20:05

回答

0

它应该是这样的

$(vendorsPopUp).on('change', 'input', function (e) { 
    alert($(this).attr('class')); 
}); 
在桌子上或身体或DIV,不投入
+1

这是正确的答案,它非常简洁明了,它有我需要的代码,如果问题以重复的方式关闭,那很好。知道为什么有些人如此倾向于投票,尤其是那些没有评论的人。 – 2014-09-30 22:26:33