Murray's solution is one approach that works. Thanks, Murray, as always!
Your fix1 solution is very close, and is easily corrected. Rather than calling the item's state() function and attempting to typeset the entire page, you should call the item's rerender() function. E.g.
item.rerender(Mathjax.startup.document);
That will cause the one item to be re-rendered, with no need to rescan the page. You can loop through all the items in the container to do the same to each if there are more than one.
It would also have been possible to use
MathJax.startup.document.rerender();
or
MathJax.startup.document.rerenderPromise();
but that would cause ALL the math on the page to be re-rendered, which is not necessary. Just re-rendering the one item (or all within the container) is sufficient.
Davide