JQuery中的MathJax
我有许多不同的MathJax公式,它们将在网页上的不同列表中动态移动。 我试图用JQuery和append属性来控制它。
在我的脚本文件中,我有各种公式数组,然后是一个函数,它使用.append列出指定div内部数组中的公式。 这是代码:
function listArray(array,div){ for(var i=0; i<array.length; i++){ $('#'+div).append(''+array[i]); } };
我遇到MathJax在此脚本运行之前对数学进行排版的问题,因此附加的公式不会显示在TeX中。 这是一个小提琴的例子:
http://jsfiddle.net/T8m64/92/
有谁知道这方面有一个很好的解决方案? 我曾尝试阅读有关重新排版MathJax的一些文档,但我并没有真正遵循它。
你的小提琴例子有两个问题。 首先,数学表达式数组会丢失反斜杠,因为它们在javascript字符串中用作转义字符。 你需要加倍他们:
var jax = ['\\(\\mathbb{Q}\\)','\\(\\mathbb{Z}\\)'];
其次,在将数学添加到页面后,您需要告诉MathJax处理数学。 使用
MathJax.Hub.Queue(["Typeset",MathJax.Hub,div]);
在附加数学后才能这样做。
你小提琴的第120版显示了一个工作版本。
我作为你的小提琴的更新/ 93,/ 94,/ 95运行了一些测试,并发现渲染的公式可以移动但整个事情是脆弱的。 有时简单的更改或只是页面刷新会导致显示未呈现的公式,每个公式都加倍,我无法解释。
正如您将看到的,我认为setTimeout
会解决问题,但现在我不认为是这种情况。
我认为这个bug只是在jsFiddle中运行代码的一个function。 在我自己的计算机上在file:// protocol下本地提供的测试页面中运行代码并在Opera中查看时,我无法引发错误。
这是我的测试页面:
Test kineticJS lib - jsFiddle demo \(\mathbb{Q}\) \(\mathbb{Z}\)