Javascript将参数传递给变量内部的函数

文森特·杜普雷斯(Vincent Duprez)

我正在尝试将点击处理程序分配给在变量中定义的JQuery对象:

some.object.array[8].action = function(data){console.log(data);}
anotherobject = {..}

现在在某个循环中,我需要将此函数分配给点击处理程序:并想传递整个“另一个对象”对象

for (var i = 0; i < foo.length; i++) {
    $('<div/>').click(some.object.array[i].action);
}

但是如何传递参数?如果将其封装在某些匿名函数中,那么我将失去作用域...:

for (var i = 0; i < foo.length; i++) {
    $('<div/>').click(function() {
        some.object.array[i].action(anotherobject)
    });
}

因为i改变了...

我们应该怎么做呢?

塞巴斯蒂安尼斯

有太多方法可以做到这一点:

for (var i = 0; i < foo.length; i++) {
    (function(i) {
        $('<div/>').click(function() {
            some.object.array[i].action(anotherobject);
        });
    })(i);
}

或者

for (var i = 0; i < foo.length; i++) {
    $('<div/>').data("i", i).click(function() {
            var i = $(this).data("i");
            some.object.array[i].action(anotherobject);
        });
    });
}

或者

function getClickHandler(callback, parameter) {
    return function() { callback(parameter); };
};
for (var i = 0; i < foo.length; i++) {
    $('<div/>').click(getClickHandler(some.object.array[i].action, anotherobject));
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章