【发布时间】:2020-10-15 22:13:30
【问题描述】:
我有一个选择元素,用户可以在其中选择一个选项。我希望能够复制该元素,同时保留用户选择的选项以在页面的其他地方使用。 .clone() 不保留所选选项。有什么建议吗?
重要编辑: 我在问:是否有解决方法: "注意:出于性能原因,某些表单元素的动态状态(例如,输入到 textarea 的用户数据和对 select 进行的用户选择)不会复制到克隆的元素。克隆输入元素时,元素的动态状态 (例如,输入到文本输入中的用户数据和用户对复选框所做的选择)保留在克隆的元素中。” ?
最小可重现示例:
预期行为: 1. 用户从 select#favorite-color 元素中选择一个选项。 2. 用户然后点击按钮#clone-li 元素 3. 我希望将 li.color-picker 元素的深层副本作为子元素附加到 ul.last 元素,WHILE 在克隆后保留所选选项选择#favorite-color 元素。
<ul class="first">
<li class="color-picker">
<select name="favorite-color" id="favorite-color">
<option value="1">Blue</option>
<option value="2" class="red">Red</option>
<option value="3">Green</option>
</select>
</li>
</ul>
<ul class="last">
</ul>
<button type="button" id="clone-li">Clone Color Picker Li</button>
<script type="text/javascript"> $(document).ready(function() {
// ******************************** v INITIALIZE v ******************************** //
// Variables:
// DOM:
var color_picker_li = $('li.color-picker');
var favorite_color_select = $('select#favorite-color');
var last_ul = $('ul.last');
var clone_color_picker_li_button = $('button#clone-li')
// States:
// setTimeout(() => {
// $(favorite_color_select).find('option.red').prop('selected',true);
// setTimeout(() => {
// $(clone_color_picker_li_button).trigger('click');
// }, 3000);
// }, 1500);
// ******************************** ^ INITIALIZE ^ ******************************** //
// ********************************** v EVENTS v ********************************** //
// Handle a CLICK on the Cloen Color Picker Li Button:
$(clone_color_picker_li_button).on('click', function() {
$(color_picker_li).clone().appendTo(last_ul);
});
// ********************************** ^ EVENTS ^ ********************************** //
}); </script>
【问题讨论】:
标签: javascript jquery dom state