当前位置: 首页 > 知识库问答 >
问题:

使用jQuery加载内容后呈现MathJax

翟光赫
2023-03-14

我用jQuery将一些包含数学的内容加载到html文件中。现在我想让Mathjax排版这个新内容,但它不起作用。这就是我的JavaScript代码的样子

<script type="text/javascript" id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>


<script>
      $(document).ready(function(){
        $("#newContent").click(function(){
          $("#content").load("{% static 'newContent.txt' %}");
          MathJax.typeset();
        });
      });
</script>

但它只加载内容,不应用MathJax。有什么建议说明它为什么不起作用吗?

编辑我添加了第二个按钮,带有第二次单击功能,运行以下脚本

<script>
  function myfunction(){
    MathJax.typeset();
  }
</script>

如果我单击第一个按钮,它将加载新内容,而不应用MathJax。如果现在单击第二个按钮,它会将MathJax应用于新内容。这告诉我,可以将MathJax应用于我加载的内容,但是,加载新内容并用一次单击进行排版到目前为止还不起作用。

共有1个答案

齐晟
2023-03-14

这是因为load发送一个异步的AJAX请求。这意味着调用load后的代码有可能(而且很可能)在服务器发送响应之前执行。在上面的例子中,调用load启动一个异步请求,然后调用MathJax。typeset()在页面上仍然没有数学运算时运行,因此不会发生任何事情。最后,load请求完成,加载数学内容。

为了确保排版在数学加载之后进行,对MathJax.typeset的调用必须在提供给load调用的回调函数中进行

$("#content").load("{% static 'newContent.txt' %}", () => MathJax.typeset());

通过在数组中提供元素id,可以让MathJax知道要呈现哪个元素:

$("#content").load("{% static 'newContent.txt' %}", () => MathJax.typeset(['content']));
 类似资料:
  • 问题内容: 我的问题: 我有index.html: 是这样的: 问题很简单。 当我按下按钮时,我想动态加载内容,而无需刷新。 提前致谢!请发表评论以进行任何必要的澄清。 编辑,更详细的解释: 我不确定自己是否很清楚(或者我可能不了解我缺乏技术技能的答案),所以我再说一遍。(改写) 我有一个带有提交按钮的HTML,该按钮通过POST方法发送变量。 PHP文件使用此变量,并在经过一定过程后插入并更新M

  • 我正在尝试使用Thymeleaf呈现电子邮件模板,我希望主题和正文在同一个文件中,但分别呈现。我不想使用spring视图,只想使用普通的。 这有几个问题 首先,我无法获取Thymeleaf仅渲染

  • 问题内容: 在此页面上,我有一个jQuery弹出窗口和可调整大小的缩略图。如果我将鼠标悬停在缩略图上,则图像的大小将完美调整。另外,当我单击页脚中的黄色大电视按钮“ QuickBook TV”时,弹出窗口会按照我的意愿完美显示。 但是,当我单击“下一步”或“上一步”按钮时,将使用AJAX加载新内容,而jQuery不再对弹出窗口或缩略图起作用。我搜索了许多论坛来寻找有关此问题的信息,但是由于对jQu

  • 问题内容: 我需要创建一个页面,该页面将使用Jquery和AJAX从外部页面加载div。 我遇到了一些很好的教程,但是它们都是基于静态内容的,我的链接和内容是由PHP生成的。 我基于我的代码的主要教程来自:http: //yensdesign.com/2008/12/how-to-load-content-via-ajax-in- jquery/ 我需要的确切功能如下: 主页包含一个永久div,其

  • 问题内容: 我有一种情况,我加载了一个父网页(可能是Java JSP),该网页包含我正在使用文档就绪函数内的ajax(asynch)加载的内容,希望该页面能够快速呈现任何内容,然后运行jQuery代码以页面显示后执行紧急工作。 它按照预期在Firefox中正常工作-页面快速呈现,然后jquery代码运行ajax调用并加载其他元素。 在IE8中,它等待直到一切完成,然后呈现完成的结果。它不支持我的文

  • 我试图在一个网站上获得一个内容列表(若有人感兴趣的话,这一个)。布局最近发生了变化,现在他们不会一次加载所有内容,而是使用magic(可能是js)。我目前正在使用JSoup分析HTML,但我愿意接受建议。 这就是我得到的: 实现此目的的代码: 这是我想看到的(复制从检查元素后,页面加载了所有的内容): 谷歌帮不了什么忙,因为与微调器等相关的所有内容都与javascript有关。 解决方案: 由于J