追加元素在IE11中不起作用

gra*_*olf 5 jquery internet-explorer internet-explorer-11

在构造函数中,我创建一个元素

var this.legendElement = this.compileLegend();
Run Code Online (Sandbox Code Playgroud)

而且我以后想在事件监听器中使用它:

var takeControl = function() {
    this.element.empty();
    this.legendElement.appendTo(this.element);
}
Run Code Online (Sandbox Code Playgroud)

legendElement已附加,但为!我不明白为什么。在其他浏览器(经过测试的Firefox,Chrome)中,它可以正常工作

另外,当我打印this.legendElement的内容时,我看到的是预期的html代码。换一种说法

console.log(this.legendElement);
Run Code Online (Sandbox Code Playgroud)

产生具有正确内容的预期html代码(我在takeControl函数中称呼它)。

我尝试了几种方法来解决它

this.element.append(this.legendElement)
Run Code Online (Sandbox Code Playgroud)

也不起作用。

这个:

this.element.append(this.legendElement.html())
Run Code Online (Sandbox Code Playgroud)

附加html代码,但周围没有this.legendElement(这是预期的)。

所以以下

this.element.append($('<div />').append(this.legendElement).html())
Run Code Online (Sandbox Code Playgroud)

做了我想要的事情,但是看起来就像一个丑陋的hack

所以,我的问题是:发生了什么事,我能得到什么

this.element.append(this.legendElement)
Run Code Online (Sandbox Code Playgroud)

去工作?

提前致谢!^ _ ^

Zan*_*per 5

IE11(至少是我的版本或设置)不支持element.append。但是,它确实与element.appendChild一起按预期工作。

MDN的浏览器兼容性部分确认IE(与其他所有浏览器相比)从未获得过ParentNode.append支持,但一直都具有Node.appendChild支持,这似乎是通用的。

  • 尽管未进行测试,但仍将其标记为可接受的答案(我已经有4年了,该项目已经消失了...) (2认同)