附加元素在IE11中不起作用

时间:2014-07-11 19:43:26

标签: jquery internet-explorer internet-explorer-11

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

var this.legendElement = this.compileLegend();

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

var takeControl = function() {
    this.element.empty();
    this.legendElement.appendTo(this.element);
}

附加了legendElement,但为空!我不明白为什么。 在其他浏览器(测试过的Firefox,Chrome)中,它正在运行

另外,当我打印 this.legendElement 的内容时,我会看到html代码。换句话说

console.log(this.legendElement);

生成具有正确内容的预期html代码(我在takeControl函数中调用它)。

我尝试了几种方法来修复它

this.element.append(this.legendElement)

也不起作用。

此:

this.element.append(this.legendElement.html())

附加html代码,但不包含 this.legendElement (预期)。

以下

this.element.append($('<div />').append(this.legendElement).html())

做我想做的事,但它看起来就像是一个丑陋的黑客

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

this.element.append(this.legendElement)

上班?

提前致谢! ^ _ ^

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

您应该使用通用的el.append()而不是不受支持的el.appendChild()

答案 2 :(得分:0)

我没有找到导致此错误的原因,但每次我想要追加时,我都会通过构造元素子树(compileLegend函数)来绕过它。它需要一些丑陋的代码来使听众正确,但这是唯一对我有用的东西。