jQuery绑定在for循环变量范围内

时间:2013-05-22 04:13:01

标签: jquery scope

我知道这个问题已被多次询问,但我无法解决我在Stack O上发现的问题。这是我的代码

for(var i=0; i<retrievedSearchesListLength; i++){
retrievedSearchesListProv = retrievedSearchesList[i].searchId;
retrievedSearchesListType = retrievedSearchesList[i].searchParameters;

    function getEventHandlerFunction(a){
    $J.cookies.set('ps_clickedsearch',a);
}

 $J('#submitSearch'+i).bind('click',getEventHandlerFunction(retrievedSearchesListType));
}

每次结果值都是循环值的最后一个。如何保留范围以便单击链接得到正确的值?

我需要正确的retrieveSearchesListType来反映点击链接的时间。

提前致谢

1 个答案:

答案 0 :(得分:1)

您需要从getEventHandlerFunction

返回回调方法
for(var i=0; i<retrievedSearchesListLength; i++){
    retrievedSearchesListProv = retrievedSearchesList[i].searchId;
    retrievedSearchesListType = retrievedSearchesList[i].searchParameters;

    function getEventHandlerFunction(a){
        return function(){
            $J.cookies.set('ps_clickedsearch',a);
        }
    }

    $J('#submitSearch'+i).bind('click',getEventHandlerFunction(retrievedSearchesListType));
}