执行一次后jQuery无法正常工作

时间:2011-02-25 05:14:48

标签: javascript jquery

作为you can see here,我的小jQuery脚本在运行两次后没有工作,我得到了一个奇怪的错误。你们中的任何一个碰巧知道发生了什么/如何修复它?如果你这样做会很棒!

谢谢!

康纳

2 个答案:

答案 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}}。