我最近试图在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是我唯一改变的方法。
答案 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代码容易得多。