2013-07-14 46 views
1

我正在处理待办事项列表应用程序,该应用程序动态添加包含输入字段的列表项。当我改变一个输入的值时,我可以看到它已经改变(显然),并且它也根据通过jQuery获取val()而改变。在jQuery html()中没有显示动态添加的输入值?

$('#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()中。

我错过了什么?

撞头墙乔

回答

1

更改值或用户输入手动不会更改HTML属性,它会更改元素值属性,并且您无法通过html()获取该属性。

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

+0

这个伎俩!非常感谢。 –

0

如何append荷兰国际集团新的内容到您的#theList DIV显示它的内容之前?

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

代码示例:

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

PS:我没有测试...但如果你提供的jsfiddle我愿意这样做;与val()