我有一个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/