无法动态加载MathJax

时间:2013-08-11 15:50:38

标签: javascript jquery ajax mathjax

我有一个ajax post请求,它会动态加载一些数学内容,如下所示

// 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 个答案:

答案 0 :(得分:4)

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"]);
});