Невозможно загрузить 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"]);
});
Другие вопросы по тегам