由于you can see here,我的小jQuery脚本运行两次后不工作,我得到一个奇怪的错误。你们中的任何一个碰巧知道发生了什么/如何解决它?如果你这样做会很棒!jQuery在执行一次后不工作
谢谢!
康纳
由于you can see here,我的小jQuery脚本运行两次后不工作,我得到一个奇怪的错误。你们中的任何一个碰巧知道发生了什么/如何解决它?如果你这样做会很棒!jQuery在执行一次后不工作
谢谢!
康纳
您只绑定第一个.focus
元素上的按键事件。一旦你删除它,它将不会再收到按键事件。
改变这一行
$(".focus").keypress(function(event) {
要
$(".focus").live("keypress",function(event) {
的jQuery .live()
附加一个处理程序的情况下为当前选择现在和将来匹配这,所有的元素。
另外,你需要以上低于行
后添加是为了防止意外的行为:
if (event.which == '13') {
event.preventDefault(); < stop the enter keypress
你消除对您要添加的初始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);
但我必须说,这看起来像一个非常低效的方式来实现你想要什么在这里做...想想一个替代解决方案,您不必删除您的输入元素(只需在它之前插入新的<li>
即可)。
谢谢阿泰,我一定会考虑的! – Connor 2011-02-25 05:34:33
注:该错误显示了在2返回 – thenoviceoof 2011-02-25 05:19:31
@thenoviceoof谢谢你 - 只是固定它;) – Connor 2011-02-25 05:23:10