我已经看到了很多关于此的问题,但我仍然感到难过。我真的可以帮助理解我在这里做错了什么。
(我的术语可能在下面不正确)
我有一个textarea和一个.keyup函数,它按类名
绑定到它这第一个textarea激活函数
然后我动态添加第二个textarea,用于触发相同的函数
我的.keyup功能
$('.trans').keyup(function() {
alert("Working");
});
据我所知,上面的内容对新创建的textarea不起作用,因为它在绑定函数时不是DOM的一部分。我已经尝试了几个针对其他问题但是似乎无法解决这个问题:
我试过的其他事情:
// I also tried this
// Neither textarea responds if this is used
$('.trans').on('keyup', '.newTrans', function() {
alert("Working");
});
// I also tried this
// Only the first textarea responds
$('.trans').delegate('.newTrans', 'keyup', function(){
alert("Working");
});
这是一个JSfiddle,如果需要,可以使用更多的代码:
答案 0 :(得分:5)
.on()
method根本不适用于你的小提琴,因为你在引入.on()
之前指定了旧版本的jQuery。
如果你升级到更新版本的jQuery(至少1.7),你可以这样做:
$(document).on('keyup', '.trans', function() {
alert("Working");
});
演示:http://jsfiddle.net/VFt6X/4/
如果由于某种原因需要继续使用v1.6.4,请改用.delegate()
method:
$(document).delegate('.trans', 'keyup', function() {
alert("Working");
});
演示:http://jsfiddle.net/VFt6X/5/
请注意,无论哪种方式,您关注的元素的'.trans'
选择器都作为参数传递给函数。左侧的$(...)
部分必须指定一些已存在的容器。我使用了document
,但如果可能的话,最好指定更接近相关元素的内容,因此在您的情况下,您可以使用$("#centerNotes")
。
答案 1 :(得分:2)