不能在IE中附加“使用过的”DOMObject

时间:2010-06-02 09:04:47

标签: javascript jquery internet-explorer

我有一些对象,它们保留了创建的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的浏览器附加事件非常困难。

1 个答案:

答案 0 :(得分:2)

类似评论建议您可以使用.clone()来消除您的其他问题,而不会复制事件,这也包含在内。 .clone()接受一个布尔参数,告诉它是否要复制数据和事件(这是jQuery 1.4的一部分,它只是事件,而不是数据,之前)。

要使用.clone(bool)并获取包含事件处理程序的副本,请执行以下操作:

return domBlock.clone(true);