使用jQuery.load加载后,如何使用MathJax格式化html?

时间:2013-12-24 21:52:44

标签: javascript jquery html mathjax

我正在使用jQuery.load加载新页面。然而,内容正在以某种方式被奇怪地对待。在原始页面上,我有一些代码用MathJax格式化乳胶命令:

<script type="text/x-mathjax-config"> MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

这适用于原始文件。但是,当我点击我的链接并在页面中插入更多HTML时:

<script>
  $(document).ready(function(){
    $("#link").click(function(){
      $("#myDiv").load("test.html");
    });
  });
</script>

现在,特殊字符未由MathJax格式化,只是按原样显示。

2 个答案:

答案 0 :(得分:8)

Carols 10cents已关闭,但您需要在jQuery MathJax.Hub.Queue()的回调中执行load()调用,以便在之后文件之前不执行排版已加载。 (就目前而言,它在请求文件加载后立即发生,即使该文件可能尚不可用)。像

这样的东西
<script>
  $(document).ready(function(){
    $("#link").click(function(){
      $("#myDiv").load("test.html", function () {
        MathJax.Hub.Queue(["Typeset", MathJax.Hub, "myDiv"]);
      });
    });
  });
</script>

请参阅我在2013年1月在JMM上发表的演讲中的examples,了解更多详情和其他情况的解决方案。

答案 1 :(得分:2)

默认情况下,MathJax仅在页面加载时处理标记,因此您需要在将新内容加载到页面后告诉它再次处理。 The documentation for MathJax for modifying math on the page建议,如果您只想处理您添加的新内容,请执行以下操作:

<script>
  $(document).ready(function(){
    $("#link").click(function(){
      $("#myDiv").load("test.html");
      MathJax.Hub.Queue(["Typeset", MathJax.Hub, "myDiv"]);
    });
  });
</script>

根据您的应用程序,他们会提到其他一些方法,因此我建议您阅读该页面以找到适合您的最佳方式。