使用jQuery UI使MathML方程可拖动

时间:2013-11-24 15:53:45

标签: javascript jquery jquery-ui mathml

我最近试图在HTML中显示数学,并使其显示我正在显示的等式可以被拖动。为此,我使用了jQuery UI。

var div = $('<div id="equation">y = m * x + b</div>');
$("body").append(div);
div.draggable();

这很好。

然后我决定使用MathJax和MathML来代替我的方程,所以这就变成了

var div = $('<math xmlns="http://www.w3.org/1998/Math/MathML" id="equation"><mi>y</mi><mo>=</mo><mi>m</mi><mo>*</mo><mi>x</mi><mo>+</mo><mi>b</mi></math>');
$("body").append(div);
div.draggable();

这不行。

相反,我收到错误:

Uncaught TypeError: Cannot use 'in' operator to search for 'position' in null 

我不确定为什么会收到此错误,因此任何指导都会非常有用。我非常想让我的方程式可拖动,切换到MathML是我唯一改变的方法。

1 个答案:

答案 0 :(得分:1)

看起来jQuery在调用div时解析.draggable(),这导致错误。

一种解决方案是在创建draggable之后添加MathML:

var div = $('<div id="equation">y = m * x + b</div>');
$("body").append(div);
div.css('cursor','move');
div.draggable();
div.html('<math xmlns="http://www.w3.org/1998/Math/MathML" id="equation"><mi>y</mi><mo>=</mo><mi>m</mi><mo>*</mo><mi>x</mi><mo>+</mo><mi>b</mi></math>');

jsfiddle:http://jsfiddle.net/7v8wQ/5/。这种感觉就像一个黑客,但它的工作原理,它比黑客攻击jquery代码容易得多。