jQuery获取不正确的数据

时间:2014-07-14 09:35:06

标签: javascript jquery

my todo app project here中,我遇到了问题。

重现问题:添加一个未加星标的项目,例如:x,现在,如果您为此项目加注星标/取消星标,它将在localStorage中更新。现在,将此项目编辑为,例如:xxx,现在,如果您对此项目进行加星/取消加星标,则不会更新localStorage。原因是,阅读的项目文本为xxxxxx xxx。我在console.log()检查了它。

为什么会这样?我在这里做错了什么?

jsFiddle

代码:

function toggleStar(element, pushToUndoStack){
    console.log($(element).parent().find('p').text());
    // fetch this starred item content to locate it in the localStorage
    var starred_item = $(element).parent().find('p').text();

    // fetch current items from localStorage
    var todo_items = getLocalStorageData();

    // parse to locate 'that' item
    $.each(todo_items,function(index,item){
        //console.log(item[0]);
        if(starred_item.toLowerCase() === item[0].toLowerCase()){
            //console.log("found -> " + item[0]);
            // toggle starred true/false
            item[1] = !item[1];
            //console.log(item[1]);
            // cut the loop
            return false;
        }
    });

    // update localStorage                
    localStorage.setItem('todo_items', JSON.stringify(todo_items));

    if(pushToUndoStack){
        // update undo stack
        todo_item.undoStack.push(['toggleStar',$(element).parent().find('button').text(),$(element).parent().find('.star').prop('checked')]);
        $("#undo").removeAttr('disabled');
        //console.log(todo_item.undoStack);
    }
}

1 个答案:

答案 0 :(得分:2)

在您的JS代码中,function editItem(element, pushToUndoStack)代码为:

// replace textarea with the new text
$(element).find('textarea').replaceWith("<p class='item_content'>"+edited_text+"</p>");

每次编辑任务时,都会复制<p class='item_content'></p>。 用

更改它
// replace textarea with the new text
$(element).find('textarea').replaceWith(edited_text);

http://jsfiddle.net/G288G/1/