我準備了的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 –