2

背景不是理解问题所必需的,而是我正在尝试做的基本想法:我有一个表单,其中包含可以再次展开、编辑和折叠的各个部分,表单字段的状态是每次都记得。我想为用户提供“取消”更改的能力 - 如果用户展开一个部分并进行更改,但随后决定恢复到表单部分以前的状态(在他展开之前),他们可以单击“取消”和字段将全部还原。(这本质上是一个“撤消”/回滚按钮。)我通过在展开时使用 jQueryclone克隆表单部分来实现这一点,如果用户点击“取消”,我用原始克隆替换更新的表单部分。

问题是用户的“选择”元素选择似乎没有包含在克隆中。我已经构建了一个基本的jsfiddle来演示这一点 - 如果您尝试在任一部分中选择某些内容然后克隆它,它会在没有选择的情况下被克隆。

有没有办法绕过这个限制?我应该使用另一种方法而不是clone吗?

我假设我可以手动编写一个循环来复制所有选择的所有选定值,但这很麻烦。有没有更流畅的方法来处理这个问题?

4

1 回答 1

1

根据您的小提琴:

$(function(){
    $('#sec1Clone').click(function(){
        $("#sec1 select option:selected").attr("selected", true);
        $('#sec1').clone(true).attr('id', 'cloneOfSec1').appendTo(document.body);
    });
     $('#sec2Clone').click(function(){
         $("#sec2 select option:selected").attr("selected", true);
        $('#sec2').clone(true).attr('id', 'cloneOfSec2').appendTo(document.body);
    });
});

如果这是一个可以接受的解决方案,这似乎可行。

于 2013-01-21T17:52:09.233 回答