Создание уравнения MathML с помощью jQuery UI

0

Недавно я пытался отобразить математику в 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 - единственное, что я изменил.

Теги:
mathml

1 ответ

1
Лучший ответ

Похоже, что 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.

  • 0
    Ах, это работает. Спасибо! Редактировать: Заключение в <div> кажется, тоже работает нормально. : D

Ещё вопросы

Сообщество Overcoder
Наверх
Меню