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