В разрабатываемом приложении, которое позволяет студентам интерактивно решать задачи по линейной алгебре, студент вводит части своего решения (формулы) с помощью специального элемента управления, который для краткости называется шагом студента. Для студентов предусмотрено два вида интерфейса ввода шагов: "легкий" и "трудный". В легком интерфейсе студенту предоставляется шаблон("скелет") формулы, который он может заполнять математическими символами с помощью drag-and-drop.
Дмитрием был разработан тестовый пример, в котором на странице располагалось текстовое представление шаблона формулы (на рис - 1), математические символы, которые можно тащить и бросать в шаблон (2), сам шаблон, сгенерированный на основе текстового представления (3), и динамически генерирующееся скриптом Mathjax представление измененного шаблона (4).
А вот как выглядел этот пример при частично заполненной формуле:
Далее выяснилось, что если на html-странице расположено несколько шаблонов формул (а они в разрабатываемом приложении все заполняются математическими символами из одной и той же таблицы), то при заполнении очередного шаблона "гадится" генерирующееся mathjax'ом представление других шаблонов.
В тестовом примере обращение к элементам на странице шло по классу CSS. Например:
А вот как выглядел этот пример при частично заполненной формуле:
В тестовом примере обращение к элементам на странице шло по классу CSS. Например:
Для решения этой проблемы создала тестовый пример с двумя шаблонами для заполнения.
Всем значимым элементам html дала id, при этом id назначала так:То есть, у одинаковых по функциональному назначению элементов id отличались только номерами в конце. Функцию, которая обрабатывает бросание математического символа на шаблон формулы, изменила так: То есть, алгоритм был такой: получаем идентификатор шаблона, куда сброшен математический символ.
Из него получаем номер шаблона (1 или 2), далее формируем идентификатор визуального представления, которое должно обновиться и просим Mathjax обновить только одинhtml элемент -- с этим идентификатором.
В процессе решения этой проблемы помогла страница, которую порекомендовал Дмитрий.

