答案 0 :(得分:3)
您只绑定第一个.focus
元素上的按键事件。删除后,它将不再接收按键事件。
更改此行
$(".focus").keypress(function(event) {
要
$(".focus").live("keypress",function(event) {
jQuery .live()
为当前和未来与当前选择器匹配的所有元素附加事件的处理程序。
此外,您需要在下面的行之后添加此项以防止意外行为:
if (event.which == '13') {
event.preventDefault(); < stop the enter keypress
答案 1 :(得分:1)
您要删除要添加初始keypress
事件处理程序的元素。快速解决方法是将事件处理程序取出到函数中并将其重新附加到新添加的元素中:
function handleKeyPress(event) {
if (event.which == '13') {
var itemToAdd = $(".focus").val();
if (itemToAdd != ""){
$(this).remove();
$(".active-li").append(itemToAdd);
$("#wrapper ul").append("<li class='active'><input type='text' class='root focus' /></li>");
$(".active-li").removeAttr("class");
$(".active").removeClass("active").addClass("active-li");
$(".focus").keypress(handleKeyPress).focus();
}
}
}
$(".focus").keypress(handleKeyPress);
但我必须说,这看起来像是一种非常低效的方式来实现你在这里尝试做的事情......想想另一种解决方案,你不必删除你的输入元素(只需插入新的{在它之前{1}}。