jquery元素深度复制和使用

今天遇到一个奇葩问题,就是想将jquery对象复制之后赋值给变量a,需要使用时取出来使用。

而问题是,变量append给页面之后对里面的input赋值修改之后,再次使用变量a就变样了。

具体情况如下:

var initDialog = $.extend(true, {}, $("#my-save .am-modal-dialog"));
function addEditQuestion(questionId){
<span style="white-space:pre">	</span>$("#my-save").empty();
<span style="white-space:pre">	</span>$("#my-save").append(initDialog);
<span style="white-space:pre">	</span>$("#my-save input[name='emsQuestion.questionId']").val(data[0].value);
<span style="white-space:pre">	</span>$("#my-save input[name='emsQuestion.enumId']").val(data[8].value);
<span style="white-space:pre">	</span>$("#my-save input[name='emsQuestion.enumName']").val(data[1].value);
<span style="white-space:pre">	</span>$("#my-save input[name='emsQuestion.question']").val(data[2].value);
<span style="white-space:pre">	</span>$("#my-save input[name='emsQuestion.answerType'][value='"+ data[4].value +"']").trigger("click");
<span style="white-space:pre">	</span>var answer = eval('('+ data[3].value +')');
<span style="white-space:pre">	</span>var i = 0;
<span style="white-space:pre">	</span>for(var key in answer){
<span style="white-space:pre">		</span>if(data[4].value == "boolean"){
<span style="white-space:pre">			</span>$("#boolean input[name='emsQuestion.answerRight']").val(answerRight);
<span style="white-space:pre">		</span>}else{
<span style="white-space:pre">			</span>if(i != 0){
<span style="white-space:pre">				</span>$("#choose .am-icon-plus-circle:last").trigger("click");
<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>$("#choose input[name='emsQuestion.answerRight']:last").val(key).attr("checked", "checked");
<span style="white-space:pre">			</span>$("#choose select[name='emsQuestion.answer.key']:last").val(key);
<span style="white-space:pre">			</span>$("#choose input[name='emsQuestion.answer.value']:last").val(answer[key]);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>i++;
<span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>var answerRight = eval('('+ data[5].value +')');
<span style="white-space:pre">	</span>$("#choose input[name='emsQuestion.answerRight']").val(answerRight);
}

如图,函数addEditQuestion()执行两次以上initDialog的值已经不是将页面里的input重新append了,而是会保留上一次的结果,最明显的地方就是answer循环,每次都是累加

解决办法就是:

$("#my-save").append(initDialog);//修改为<span style="font-family: Arial, Helvetica, sans-serif;">$(</span><span class="s1" style="font-family: Arial, Helvetica, sans-serif;">"#my-save"</span><span style="font-family: Arial, Helvetica, sans-serif;">).append(initDialog.clone());</span>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值