Events 许多动态添加的文本区域的jQuery按键事件

Events 许多动态添加的文本区域的jQuery按键事件,events,jquery,dynamically-generated,Events,Jquery,Dynamically Generated,我想写一个小聊天。 在第一次加载页面时,旧消息和答案将从数据库中加载。所以我有很多不同ID的消息。对于每封邮件,我都有一个要回复的链接。当您单击它时,会出现一个消息框。我的问题是,我想在用户按键盘上的Enter键时发送回复 回复文本区域是用jquery添加的,所以我不能使用$(textarea).keypress(…) 下面是我的代码示例: <div id="container" style=""> <div id="main" role="main"> <

我想写一个小聊天。 在第一次加载页面时,旧消息和答案将从数据库中加载。所以我有很多不同ID的消息。对于每封邮件,我都有一个要回复的链接。当您单击它时,会出现一个消息框。我的问题是,我想在用户按键盘上的Enter键时发送回复

回复文本区域是用jquery添加的,所以我不能使用$(textarea).keypress(…)

下面是我的代码示例:

 <div id="container" style="">
<div id="main" role="main">
    <div id="shoutbox_container">
        <div id="shoutbox_content" style="margin-top:20px;"></div>
    </div>
</div>

for(id=0;id<5;id++){
var res_container='';
res_container+='Idontknow先生写道:'+id+'.Message';
res_容器+=‘回复’;
res_容器+='';
res_容器+='';
res_容器+=‘发送’;
res_容器+='';
res_container+='

'; $(“#shoutbox_content”).prepend(res_容器);} //回复文本区 $('shoutbox_content')。在('click','reply',函数(){ var parentid=$(this.data('parentid'); $('#shoutbox_content').find('#reply_textbox.'+parentid).toggle(); }); //回复发送按钮 $('shoutbox_content')。在('click','button',函数(){ var parentid=$(this.prev('textarea').data('parentid'); var reply=$(this.prev('textarea').val(); $(this.prev('textarea').val(''); $('#shoutbox_content')。查找('#reply_textbox.'+parentid).hide(); 如果(reply.length>0){ 警报('save reply'+parentid); } }); //当客户端在键盘上按ENTER键时 $('shoutbox_content')。按键('textarea',函数(e){ 如果(e.which==13){ log($(this.find('textarea')); var test=$(this.attr('data-parentid'); 警报(“输入”+测试); $(this.blur(); $(this).next(“#replysend”).focus().click(); } });
它可以工作,但我不知道发送了哪个ID。有人知道我如何找出用户在哪个回复文本区域按Enter键吗?

所以,像使用其他事件声明一样使用.on()函数:

// when the client hits ENTER on their keyboard
$('#shoutbox_content').on('keypress','textarea', function (e) {

   //Retrieve ID of the textarea
   var id = $(this).attr('id');

   //Do what you want with id variable

   if (e.which == 13) {
       console.log($(this).find('textarea'));
       var test = $(this).attr('data-parentid');
       alert('Enter ' + test);
       $(this).blur();
       $(this).next('#replysend').focus().click();
   }
});
然后通过检查事件发生的文本区域的ID或其他类似属性来检索事件发生的文本区域:
$(this).attr('ID')

因此,使用.on()函数就像您正在使用的其他事件声明一样:

// when the client hits ENTER on their keyboard
$('#shoutbox_content').on('keypress','textarea', function (e) {

   //Retrieve ID of the textarea
   var id = $(this).attr('id');

   //Do what you want with id variable

   if (e.which == 13) {
       console.log($(this).find('textarea'));
       var test = $(this).attr('data-parentid');
       alert('Enter ' + test);
       $(this).blur();
       $(this).next('#replysend').focus().click();
   }
});
然后通过检查事件的ID或其他类似的属性来检索事件发生的文本区域:
$(this.attr('ID')