在for循环中定义函数

西蒙纳卡

我准备了一个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都包含在跨度中,其ID类似于“ MathJax-Element-n-Frame”,其中n = 1,2,3,...所以这些是元素I将处理程序附加到它,并且似乎可以正常工作,证明是出现的两个初始警报。

因此,问题似乎出在“ jax_remove”函数的链接中。

你能帮我么?

以利亚

为了降低复杂度,请考虑使用Function.prototype.bind()

$("#"+jax.inputID+"-Frame").click(jax_remove.bind(null, jax));

小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章