0

我有一个 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 命令无法呈现动态加载的数学脚本。当我在命令行上执行相同的命令时,它的工作!

如果有人解释为什么会发生这种情况以及如何解决,那就太好了

4

1 回答 1

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"]);
});
于 2013-08-11T16:12:25.327 回答