2013-07-14 91 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()