0

我正在尝试创建与按钮 ID 同名的函数

var a = ["ab1","aj6","yt5","gf5","js9"]
for (i = 0; i < a.length; i++) {
    var el = a[i];
    function el(){
        list.find(el);
    }
    $(function() {
        $("#"+el).click(el);
    }
}

当我这样做时,我得到一个

未捕获的类型错误:无法读取匿名函数上未定义的属性“处理程序”

. 但是,当我将函数名称更改为“计算”而不是 varel时,它可以正常工作。有任何想法吗?

4

4 回答 4

2

如果您尝试将单击处理程序绑定到数组中具有“id”的每个元素,则:

var a = ["ab1","aj6","yt5","gf5","js9"]

$.each(a,function(i,val){               //for each item
    $("#"+val).on('click',function(){   //bind a click handler
        list.find(val);                 //that finds that element in "list"
    });

    //or

    $("#"+val).click(function(){ 
        list.find(val); 
    });

    //or

    $("#"+val).bind('click',function(){ 
        list.find(val); 
    });

    //or

    $('body').delegate('#'+val,'click',function(){ 
        list.find(val); 
    });
})
于 2012-04-15T10:52:48.767 回答
1

我不知道您要实现什么,但是“是的,可以使用数组值创建函数”:

var a = ["ab1","aj6","yt5","gf5","js9"];
for (var i = 0; i < a.length; i++) {        
    window[a[i]] = function(){
    };
}

"ab1","aj6","yt5","gf5","js9"在此之后,您有 5 个带名称的全局函数。

于 2012-04-15T11:01:05.363 回答
0

您不能有两个具有相同名称的变量。var el和都function el称为el。JavaScript 将函数名称视为分配函数的变量名称(某种意义上)。

此外,您可能应该使用函数语句而不是函数声明。有关更多信息,请参阅http://kangax.github.com/nfe/

于 2012-04-15T10:53:06.567 回答
-1

这样做是这样的:

var a = ["ab1","aj6","yt5","gf5","js9"]
for (i = 0; i < a.length; i++) {
    var el = a[i];

    $("#"+el).click(functon(){
        list.find(el);
    });

}
于 2012-04-15T10:52:39.800 回答