deepclone仅在循环的最后一次迭代中受到影响

时间:2014-03-06 11:53:01

标签: javascript jquery

我正在尝试在循环中克隆Select with is handler,

但处理程序仅在最后一次迭代中绑定到克隆。

这是选择

的html
<select class="userType" id="<?...?>">
 <option>o1</option>
 <option>o2</option>
 <option selected>o3</option>
</select>

这是JS

var userType = $('.userType');
userType.change(function(){
 console.log(1);
});
$('#okBtn').click(function(){

 // obj.data is Json getting from ajax result.

 var selectRaw = $(userType).first();
 searchResult.html('');
 for(var value in obj.data){
  searchResult.html(searchResult.html()+'<div id="userResult'+obj.data[value].id+'">'+obj.data[value].name+' - '+obj.data[value].email+' </div>');
  selectRaw.clone(true, true).appendTo('#userResult'+obj.data[value].id).attr('id', obj.data[value].id).children().attr('selected', false);
 }
});

1 个答案:

答案 0 :(得分:1)

好的,这很奇怪。我改变了在克隆之前插入div的方法,它现在可以正常工作了!

我从.html()更改它:

searchResult.html(searchResult.html()+'<div id="userResult'+obj.data[value].id+'">'+obj.data[value].name+' - '+obj.data[value].email+' </div>');

追加()。

searchResult.append('<div id="userResult'+obj.data[value].id+'">'+obj.data[value].name+' - '+obj.data[value].email+' </div>');

有人可以为此得到合乎逻辑的解释吗?