我有一个表单,当用户点击编辑时,它会将字段从文本更改为带有cat_name_edit类的文本框。
按文本框中的任意键时,不会触发以下代码。它是否与我已经将文本更改为文本框的事实有关?
$(".cat_name_edit").keypress(function() {
alert("hi");
});
我也尝试过.click()和.keydown()没有运气。有什么想法吗?
答案 0 :(得分:1)
好的,显然我必须使用.live()
答案 1 :(得分:0)
我认为页面加载时不存在元素,因此不会附加事件。尝试使用jQuery live。
$(".cat_name_edit").live('keypress', (function() {
alert("hi");
});
答案 2 :(得分:0)
我将其放入fiddle keypress()
正常工作:
$(".cat_name_edit").keypress(function(e) {
$(this).replaceWith("<textarea class=\"cat_name_edit\"></textarea>");
$("textarea.cat_name_edit").focus();
});
keyup()
也会奏效。
我也开始自由地使用textarea替换输入的函数。
答案 3 :(得分:0)
或者您也可以使用EventDelegation。将您的单击事件附加到包含这些文本框的父项,并在函数中检查单击的目标是否具有类cat_name_edit,然后执行操作。