1

我正在开发一个动态添加包含输入字段的列表项的待办事项列表应用程序。当我更改输入的值时,我可以看到它已经更改(显然)并且根据通过 jQuery 获取 val() 也发生了更改。

    $('#theList').on('change', '.listItem', function(e){
    currentList = $(this).val();
    alert(currentList); /* Changed value appears */
});

但是,我的最终目标是获取整个标签的 innerHTML 并通过本地存储保存。所以,如果我这样做:

    $('#theList').on('change', '.listItem', function(e){
    currentList = $('#theList').html();
    alert(currentList); /* List with unchanged value appears */
});

我得到所有列表项的原始状态 - 并且更改的值被丢弃。

我使用的是 .on() 方法,而不是已弃用/删除的 .live() 方法。我的整个例程都包含在 document.ready() 中。

我错过了什么?

头撞墙乔

4

2 回答 2

1

使用用户输入或手动更改值val()不会更改 HTML 属性,它会更改元素值属性,而您无法使用html().

您可以更改值,attr('value', 'something')它会更改属性以及您获得的标记html(),但您应该真正重新考虑将标记存储在 localStorage 中的整个概念,而只存储键/值。

于 2013-07-14T23:44:53.930 回答
0

在显示内容之前将新内容附加到#theList div 怎么样?

另一种方法是通过jQuery 的 .html() 方法替换整个内容,请参见以下示例。

代码示例:

$('#theList').on('change', '.listItem', function(e){
    currentList = $(this).val();
    alert(currentList); /* Changed value appears */
    $('#theList').html(currentList);
});

PS:我没有测试它......但如果你提供一个 jsFiddle 我愿意这样做;)

于 2013-07-14T23:43:08.590 回答