我准备了的jsfiddle解释我的问题,这里是:http://jsfiddle.net/3tAZ7/1/在定义函数循环
所以,基本上我试图附加一个处理程序,以每mathjax渲染的对象,这样当我点击一个其中,函数“jax_remove”被调用。
问题是,无论我点击哪个mathjax元素,它都会删除最后一个mathjax元素!
这是我使用的功能:
setTimeout(function() { //timeout is necessary for mathjax loading
jaxes = MathJax.Hub.getAllJax("math");
for(var i = 0; i < jaxes.length; i++) {
var jax=jaxes[i];
alert(jax.inputID);
$("#"+jax.inputID+"-Frame").click(function() {
jax_remove(jax);
});
};
},1250);
,如果你检查DOM,你可以看到每一个渲染mathjax包含在范围中包含“MathJax元件型N帧的ID “,其中n = 1,2,3,...所以这些是我附加处理程序的元素,它似乎起作用,证明是两个最初发出的警报。
所以问题似乎是链接到“jax_remove”函数。
你能帮我吗?
[创建在环封闭件:一个常见的错误(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures#Creating_closures_in_loops.3A_A_common_mistake) &http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example –