1

我已经看到了很多关于此的问题,但我仍然很难过。我真的可以使用一些帮助来理解我在这里做错了什么。

(下面我的术语可能不正确)

我有一个 textarea 和一个 .keyup 函数通过类名绑定到它

这第一个 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,如果需要,我会使用更多代码:

jSfiddle

4

2 回答 2

5

.on()方法根本不会在您的小提琴中起作用,因为您已经指定了之前.on()引入的旧版本的 jQuery。

如果您升级到更新版本的 jQuery(至少 1.7),您可以这样做:

 $(document).on('keyup', '.trans', function() {
    alert("Working");
 }); 

演示:http: //jsfiddle.net/VFt6X/4/

如果您出于某种原因需要继续使用 v1.6.4,请改用以下.delegate()方法

 $(document).delegate('.trans', 'keyup', function() {
    alert("Working");
 }); 

演示:http: //jsfiddle.net/VFt6X/5/

请注意,无论哪种方式,'.trans'您关心的元素的选择器都会作为参数传递给函数。$(...)左边的部分必须指定一些已经存在的容器。我用过document,但如果可能的话,最好指定更接近相关元素的东西,所以在你的情况下你可以使用$("#centerNotes").

于 2013-07-28T07:58:05.643 回答
2

尝试这个:

$('.trans').live('keyup', function() {
    alert("Working");
});

http://jsfiddle.net/VFt6X/3/

于 2013-07-28T07:56:49.183 回答