Javascript “如何传递数据以隐藏和显示”;“完成”;功能

Javascript “如何传递数据以隐藏和显示”;“完成”;功能,javascript,jquery,Javascript,Jquery,我需要这样做: for (var i in arrayOfObjects) { var options = arrayOfObjects[i]; $('.' + options.className).hide('middle', function(){ //And here I need to use a data from options. //How can I pass 'options' object here? $(o

我需要这样做:

for (var i in arrayOfObjects) {
    var options = arrayOfObjects[i];
    $('.' + options.className).hide('middle', function(){
        //And here I need to use a data from options. 
        //How can I pass 'options' object here? 
        $(options.attribute).doSomethig();
    });
}

这是因为在异步回调方法中使用了闭包变量
options
。一种解决方案是在循环内创建一个私有闭包,如下所示

for (var i in arrayOfObjects) {
    (function(options){
        $('.' + options.className).hide('middle', function () {
            //And here I need to use a data from options. 
            //How can I pass 'options' object here? 
            $(options.attribute).doSomethig();
        });
    })(arrayOfObjects[i])
}
另一个解决方案是使用jQuery进行迭代

$.each(arrayOfObjects, function(i, options){
    $('.' + options.className).hide('middle', function () {
        //And here I need to use a data from options. 
        //How can I pass 'options' object here? 
        $(options.attribute).doSomethig();
    });
})

@罗里姆克罗桑为什么会这样it@ArunPJohny因为我没有问您如何迭代arrayOfObjects,所以我希望在回调中使用对象中的数据(完成)函数。@AnatoliyGusarov如果您阅读了答案的第一部分,就可以清楚地看到这个小演示来展示问题和解决方案@Rorymcrossan您能看一下上面的内容吗fiddles@RoryMcCrossan对
options
对象在回调函数外部声明,并且此代码
$(options.attribute).doSomethig()将不会执行。