encontré la forma más sencilla de hacer actualizaciones dinámicas con MathML es dejar que mathjax hacer los cambios de contenido (en lugar de la función jQuery .html (s), por ejemplo) Luego procesa las operaciones matemáticas al cambiar el contenido.
<script type="text/javascript">
function updateMathContent(s) {
var math = MathJax.Hub.getAllJax("mathdiv")[0];
MathJax.Hub.Queue(["Text", math, s]);
}
</script>
...
<div id="mathdiv">
<math xmlns="http://www.w3.org/1998/Math/MathML">
<msup>
<mi>x</mi>
<mn>2</mn>
</msup>
</math>
</div>
Entonces sólo tiene que utilizar la función de reemplazar todo el contenido de la nueva div con MathML y funcionará. (El guión va en la cabeza.)
Nota: Si tiene un div matemático vacío y agrega MathML más tarde, obtendrá un error de guión. Pero si las etiquetas matemáticas están presentes sin nada dentro de la llamada a updateMathContent funcionará.
De acuerdo con [los documentos] (http://www.mathjax.org/docs/2.0/typeset.html), no debe llamar a MathJax.Hub.Typeset() directamente, ya que MathJax funciona de forma asíncrona. En su lugar, debe llamar a 'MathJax.Hub.Queue ([" Typeset ", MathJax.Hub]);' –
@AnthonyBatchelor: De acuerdo. He actualizado mi respuesta para que sea más obvio. – thirtydot
Nota del futuro: cdn.mathjax.org está llegando al final de su vida útil, consulte https://www.mathjax.org/cdn-shutting-down/ para obtener sugerencias de migración. –