Javascript命名空间问题,如何在此函数调用中获取此值

时间:2011-11-29 22:41:21

标签: javascript jquery

我只是不确定如何在此功能中获得所需的值谢谢!

temp = exotics[i].split(',');

if ($.inArray(temp[0], tblProbables) != -1) {
    item = $("<li><a id='" + temp[0] + "'" + "href='#' >" + temp[1] + "</a></li>");
    item.click(function () { GetProbable(temp[0]); });
}

temp [0]是空白的,因为它在该函数空间中不存在....所以如何设置click事件以便它使用正确的param调用该函数?

2 个答案:

答案 0 :(得分:3)

我感觉你正在以某种方式重用temp变量。

如果是这样,您可以在函数中创建一个新的变量作用域,该函数返回一个引用正确作用域变量的函数。

function createHandler( temp ) {
    return function () { GetProbable(temp); };
}

item.click( createHandler(temp[0]) );

答案 1 :(得分:1)

将值存储在临时变量中:

....
    var temp0 = temp[0];
    item.click(function () { GetProbable(temp0); });

如果temp0变量多次变化(例如在循环中),则创建一个闭包:

    (function(temp0){ //Inside this function, it doesn't matter if `temp` changes
        item.click(function () { GetProbable(temp0); });
    })(temp[0]);