我有一些对象,它们保留创建的 DOMObject,如下所示:
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 附加事件。
最佳答案
点赞评论建议可以使用.clone()
为此,为了消除您的其他问题,事件不复制,也包括在内。 .clone()
接受一个 bool 参数,告诉它是否复制数据和事件(这是从 jQuery 1.4 开始的,在那之前它只是事件,而不是数据)。
使用.clone(bool)
并获取包含事件处理程序的副本,只需执行以下操作:
return domBlock.clone(true);
关于javascript - 无法在 IE 中附加 "used"DOM 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2956259/