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

Было бы неплохо, если бы кто-нибудь объяснил, почему это происходит и как это исправить


person Surya    schedule 11.08.2013    source источник


Ответы (1)


Метод load() использует ajax, который выполняется асинхронно, что означает, что после отправки запроса на сервер операторы после этого будут продолжать выполняться, не дожидаясь ответа от сервера.

В этом случае, когда запрос load отправляется, до того, как #comment-list будет заполнен ответом, будет выполнен оператор MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);, поэтому он ничего не отображает.

Решение состоит в том, чтобы использовать обратный вызов, предоставляемый load, для запуска операторов, которые должны работать с элементами, загруженными запросом ajax.

Ex

$('#comment-list').load(' ' + '#comment-list', function(){
    MathJax.Hub.Queue(["Typeset",MathJax.Hub, "comment-list"]);
});
person Arun P Johny    schedule 11.08.2013