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

如果有人解释为什么会这样以及如何解决,那将是很好的

最佳答案

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

关于javascript - 无法动态加载MathJax,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18173737/

10-14 00:41