Javascript jQuery按键事件未触发

Javascript jQuery按键事件未触发,javascript,jquery,Javascript,Jquery,我有一个表单,当用户点击edit时,它会将字段从文本更改为一个文本框,其中包含一个cat_name_edit类 按下文本框中的任何键都不会触发以下代码。这可能与我已经将文本更改为文本框有关吗 $(".cat_name_edit").keypress(function() { alert("hi"); }); 我也尝试过.click()和.keydown(),但运气不佳。有什么想法吗?好的,显然我必须使用.live()我认为页面加载中没有元素,因此事件没有附加。尝试使用j

我有一个表单,当用户点击edit时,它会将字段从文本更改为一个文本框,其中包含一个cat_name_edit类

按下文本框中的任何键都不会触发以下代码。这可能与我已经将文本更改为文本框有关吗

  $(".cat_name_edit").keypress(function() {

     alert("hi"); 

  });

我也尝试过.click()和.keydown(),但运气不佳。有什么想法吗?

好的,显然我必须使用.live()

我认为页面加载中没有元素,因此事件没有附加。尝试使用jQuery

我将其放入一个
keypress()
工作正常:

$(".cat_name_edit").keypress(function(e) {
    $(this).replaceWith("<textarea class=\"cat_name_edit\"></textarea>");
    $("textarea.cat_name_edit").focus();
});
$(“.cat\u name\u edit”).按键(功能(e){
$(此)。替换为(“”);
$(“textarea.cat_name_edit”).focus();
});
keyup()
也会起作用


我还自由地创建了一个函数,用文本区域替换输入。

或者您也可以使用EventDelegation。将单击事件附加到包含这些文本框的父级,并在函数中检查单击的目标是否具有类别cat_name_edit,然后执行操作

您在“ready”函数中尝试过这个函数吗?您也可以尝试使用
.on()
.delegate()
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。jQuery旧版本的用户应优先使用.delegate(),而不是.live()
$(".cat_name_edit").keypress(function(e) {
    $(this).replaceWith("<textarea class=\"cat_name_edit\"></textarea>");
    $("textarea.cat_name_edit").focus();
});