使用jQuery动态插入MathML

时间:2012-11-29 08:23:34

标签: javascript jquery xml dom mathml

我编写了一个讨厌的小javascript函数,它创建了一个MathML Matrix DOM。我的问题是当我用jQuery的追加(MathMLDOM)插入DOM时;它没有正确显示。但是当我复制粘贴生成的XML并将其手动插入HTML文档时,它显示得很好。为什么不附加工作,有没有办法动态插入MathML DOM?

问候

2 个答案:

答案 0 :(得分:1)

您是否附加了正确的XML命名空间?这对我有用:

$('#foo').append('<math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>a</mi><mi>i</mi></msup><mo>+</mo><mi>b</mi></math>')

没有命名空间,没有MathML。

答案 1 :(得分:1)

是的,您需要命名空间,需要在元素创建时给出。文档对象的createElementNS()方法实现了这个目的:

document.createElementNS("http://www.w3.org/1998/Math/MathML", "element");

其中“element”是一个字符串,如“mo”,“mfrac”,“math”等。您可以将其包装在插入正确名称空间的函数中。无论如何,它适用于Firefox。

var mathml = function(el) {
    return document.createElementNS("http://www.w3.org/1998/Math/MathML", el);
};

之后您可以从中创建一个jQuery对象:

$mi1 = $( mathml("mi") ).text(a);
$mn1 = $( mathml("mn") ).text(2);
$term1 = $( mathml("msup") ).append($mi1).append($mn1);

会给你一个$ term1 jQuery对象,其内容为 2