我有一個表單UI,其中幾個部分需要重複的HTML選擇列表從一個動態可更新的選擇列表動態更新。使用JavaScript和JQuery,如何維護動態更新的HTML選擇元素的選定狀態?
動態可更新列表工作得很好,因爲可以即時添加和刪除新選項。然後我可以使用JQuery .find()將這個更新傳播到每個重複列表中。我甚至添加了一些邏輯來維護原始選擇列表的當前選定索引。
我無法做的是維護每個重複選擇列表的選定狀態,因爲新選項將從原始選擇列表中添加並刪除。由於對原始選擇列表的每次更新都會遍歷每個重複選擇列表,因此它們會丟失其當前選定的選項索引。
下面是一個例子我conundrum-- *編輯 - 我會鼓勵你去嘗試和執行我下面提供的代碼和前申請你的理論建議的解決方案,因爲沒有的建議到目前爲止都有效。我相信你會發現這個問題一個很好的協議棘手比你可能會認爲,在第一種:
<form>
<div id="duplicates">
<!--// I need for each of these duplicates to maintain their currently selected option index as the original updates dynamically //-->
<select>
</select>
<select>
</select>
<select>
</select>
</div>
<div>
<input type="button" value="add/copy" onclick="var original_select = document.getElementById('original'); var new_option = document.createElement('option'); new_option.text = 'Option #' + original_select.length; new_option.value = new_option.text; document.getElementById('original').add(new_option); original_select.options[original_select.options.length-1].selected = 'selected'; updateDuplicates();" />
<input type="button" value="remove" onclick="var original_select = document.getElementById('original'); var current_selected = original_select.selectedIndex; original_select.remove(original_select[current_selected]); if(original_select.options.length){original_select.options[current_selected < original_select.options.length?current_selected:current_selected - 1].selected = 'selected';} updateDuplicates();" />
<select id="original">
</select>
</div>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
function updateDuplicates(){
$("#duplicates").find("select").html($("#original").html());
}
</script>
</form>
需要注意的是重複的HTML選擇列表應該保持多少有些武斷,這是很重要的,如果在所有可能的(即,沒有ID的),因爲此方法需要一般地應用於整個文檔中的其他動態創建的選擇列表。
在此先感謝!
您可以選擇先用'$選擇( 「重複選擇:第一」)' ,如:'$(「副本中進行選擇:第一「).append('
您可以將您的代碼(在最近的表單中,您遇到問題)發佈爲[jsfiddle](http:// jsfiddle .net /)或許?它會加快調查這個問題並幫助其他人改進它。 – Tadeck
這裏是我通過jsFiddle的可行解決方案: http://jsfiddle.net/tMJ29/ – lincolnberryiii