javascript - 两次编辑本地存储项返回未定义

标签 javascript jquery local-storage

我正在创建一个待办事项列表,一切似乎都很顺利。我能够创建、删除和编辑项目。但是,如果我尝试编辑一个项目两次 - 它返回未定义。

请看我的 fiddle :http://jsfiddle.net/willwebdesigner/786Qu/17/

// Edit a task
$(document).on("click", "#tasks li a.edit", function() {

    var thisID = $(this).parent().attr("id");

    $(this).parent().html("<form><input class='taskEdit" + thisID + "' value=''><input type='submit' value='Edit me'></form>")
    .submit(function() {
         localStorage.setItem(thisID, $(".taskEdit" + thisID ).val());
        $(this).html(localStorage.getItem(thisID) + menuButtons);
    });
});

最佳答案

表单正在提交,在值可以存储到本地存储之前重新加载页面,一旦页面重新加载并尝试从本地存储中获取该值,它是未定义的。

为什么每次在本地存储中存储一个值时都提交表单并重新加载页面?

并且提交函数绑定(bind)到 $(this).parent(),而不是包含“Edit me”按钮的表单。

$(document).on("click", "#tasks li a.edit", function () {
    var thisID = $(this).parent().attr("id"),
        form = $("<form><input class='taskEdit" + thisID + "' value=''><input type='submit' value='Edit me'></form>");

    $(this).parent().empty().append(form);
    form.on('submit', function (e) {
        e.preventDefault();
        localStorage.setItem(thisID, $(".taskEdit" + thisID).val());
        $(this).html(localStorage.getItem(thisID) + menuButtons);
    });
});

FIXED FIDDLE

关于javascript - 两次编辑本地存储项返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632814/

相关文章:

Javascript hide show div - 默认情况下显示 div

javascript - 使用 jQuery 在 POST 中传递 html 表

javascript - 回调事件不起作用 - 使用 Owl Carousel

javascript - 无法从浏览器的本地存储中删除项目

javascript - 使用 ReactJS 将 JWT 存储在 localStorage 中安全吗?

javascript - 如何在 Three.Js 中添加按钮作为 UI 元素

javascript - Bootstrap selectpicker不显示选项

javascript - 根据值删除本地存储数组对象

javascript - 正则表达式将 <div> 转换为 <br>

javascript - 从数组 javascript 中删除旧值