我有一些对象,它们保留了创建的DOMObjects,就像这里:
function category(){
var domBlock;
this.block = function(){
if (!domBlock){
// Here dom-object constructor $('<div></div>'); etc
}
return domBlock; // jquery object,
// but i test and native document.createElement
}
}
然后我清除类别的区域,并附加旧的和新的(使用Ajax)对象:
area.html('');
for(id in category_list){
area.append( category_list[id].block() );
}
其中category_list是包含类别对象的列表。 Area是jQuery对象。
在其他浏览器中(IE除外)我得到了所有需要类别的区域,但是在IE中我只得到新接收的类别(只是创建了DomObject),其他保留旧DomObject的旧对象没有显示。
我知道有可能使用innerHTML,但我不会保留DomObject,而不是文本。因为DomObject保留了很多事件。刷新区域后每个DomObject的浏览器附加事件非常困难。
答案 0 :(得分:2)
类似评论建议您可以使用.clone()
来消除您的其他问题,而不会复制事件,这也包含在内。 .clone()
接受一个布尔参数,告诉它是否要复制数据和事件(这是jQuery 1.4的一部分,它只是事件,而不是数据,之前)。
要使用.clone(bool)
并获取包含事件处理程序的副本,请执行以下操作:
return domBlock.clone(true);