2016-01-08 57 views
0

如何在内部点击事件上传递地图的正确变量?基本上,我有使用绑定到单击事件的地图传递给函数fooFunc的信息。我在循环中生成了点击函数,因为它们需要生成许多对象。将变量传递给循环内事件的函数

地图很复杂,因为我需要传递对象上的一些东西以及用户选择的一些东西。

for (i = 0; i < providers.length; i++) { 
    var tNeeded = $("#select"+i).val(); 
    var type = $("#select"+i).find('option:selected').text(); 
    $("#select"+i).on("change", function() { 
     tNeeded = $(this).val(); 
     type = $(this).find('option:selected').text(); 
     $("#target"+i).click({timeNeeded:tNeeded, timeType:reason, objectId:object[i].id}, fooFunc); 
    }); 
    $("#target"+i).click({timeNeeded:tNeeded, timeType:reason, objectId:object[i].id}, fooFunc); 
} 

更改事件之外的定义是在用户单击目标而不更改选择框中的任何内容的情况下。现在,当更改事件被触发时,objectID将获取最后一个对象的ID,而不是与目标点击关联的ID。我如何将此ID与更改功能一起传递?

回答

0

我会修改fooFunc,以便它接受你想要的参数。然后,我会创造另一个功能是这样的:

function makeFooFunc(arg1, arg2) { 
    return function fooFuncCaller(e) { 
     return fooFunc(arg1, arg2, e); 
    } 
} 

,并调用它是这样的:

$("#target"+i).click(makeFooFunc(arg1, arg2)); 

使用函数式编程来完成这项工作。