Jquery Can';追加元素后的元素的t调用事件

Jquery Can';追加元素后的元素的t调用事件,jquery,Jquery,使用append()添加元素时出现问题。添加后,我想处理此元素的事件按键,但它无法工作。这是我的代码: $(...).append("<input class='chat_input'>"); $('.chat_input').on('keypress', function(ev){ console.log(ev) }); $(…)。追加(“”); $('.chat_input')。打开('keypress',函数(ev){ console.log(ev)}); 请帮

使用
append()
添加元素时出现问题。添加后,我想处理此元素的事件按键,但它无法工作。这是我的代码:

$(...).append("<input class='chat_input'>");

$('.chat_input').on('keypress', function(ev){
     console.log(ev) });
$(…)。追加(“”);
$('.chat_input')。打开('keypress',函数(ev){
console.log(ev)});

请帮助我。

您需要将事件处理程序附加到文档中,如果在附加之前运行按键处理程序,则在附加之后不会将其添加到任何附加的输入中

下面是一个JSFIDLE:

jQuery

$(function () {

    $('.input').append("<input class='chat_input'>")

    $(document).find('.chat_input').on('keypress', function (ev) {
        console.log(ev)
    });
});
$(函数(){
$('.input')。追加(“”)
$(文档)。查找('.chat_input')。打开('keypress',函数(ev){
控制台日志(ev)
});
});

此外,全局事件处理程序更好,因为对于6个不同的输入,您不会有6个不同的处理程序

我已经修复了它。这是我的代码:$(document).delegate('.chat_input','keypress',function(ev){

。请编辑您的问题,并确保它包含实际的复制。如果您按照显示的顺序执行这些行,则此处没有问题。
$(文档)。find('.chat\u input')
$('.chat\u input')完全相同
后者可能会得到更好的优化。您仍然将keypress事件处理程序附加到.chat\u输入元素,因此您提到的“全局事件处理程序”也是不正确的。您所做的事情是w.r.t。问题是在其周围添加一个函数,一旦加载文档,jQuery将调用该函数。