Невозможно загрузить MathJax динамически
У меня есть пост-запрос ajax, который динамически загружает некоторый математический контент, как показано ниже
// post comment
$post_comment.on("click", "[data-submit='post-comment']", function() {
$.ajax({
success: function(response) {
if(response.success) {
$('#comment-list').load(' ' + '#comment-list');
MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);
}
},
});
});
Упомянутая выше команда mathjax не может отобразить динамически загруженный математический скрипт. Хотя когда я выполняю ту же команду в командной строке, она работает!!
Было бы неплохо, если бы кто-то объяснил, почему это происходит и как это исправить
1 ответ
load()
Метод использует ajax, который выполняется асинхронно, то есть после отправки запроса на сервер операторы после этого будут продолжать выполняться, не дожидаясь ответа от сервера.
В этом случае, когда load
запрос отправлен до #comment-list
заполнен ответом MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);
Оператор будет выполнен, поэтому он ничего не отображает.
Решение состоит в том, чтобы использовать обратный вызов, предоставленный load, для запуска операторов, которые должны работать с элементами, загруженными запросом ajax.
бывший
$('#comment-list').load(' ' + '#comment-list', function(){
MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);
});