今天遇到一个奇葩问题,就是想将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>