javascript - 无法在 IE 中附加 "used"DOM 对象

标签 javascript jquery internet-explorer

我有一些对象,它们保留创建的 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/

相关文章:

javascript - d3 : acting on a class in response to an event

javascript - 从 javascript 调用操作方法时 Asp、Net MVC 应用程序的安全问题

javascript - IE11 中的 JS ForEach 循环

javascript - 仅使用 javascript 在文本框中写入预定义的文本

jquery - Uploadify 在 IE 7/8 中导致错误

html - 为什么表格不在资源管理器中居中?

javascript - 如何使用 javascript 在 <div> 上禁用然后启用 onclick 事件

JavaScript - WebAudio API ScriptProcessorNode InputBuffer getChannelData 精度

javascript - 如何在 JavaScript 中列出所有数组?

jquery - 图像在旋转时未在 div 内调整大小