Недавно я пытался отобразить математику в 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 - единственное, что я изменил.
Похоже, что jQuery анализирует div
когда .draggable()
, и это вызывает ошибку.
Одним из решений является добавление MathML после создания draggable
:
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.
<div>
кажется, тоже работает нормально. : D