我正在尝试创建与按钮'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);
}
}
当我这样做时,我得到了一个
未捕获的TypeError:无法读取未定义的属性“handler” 匿名函数
。但是当我将函数名称更改为“计算”而不是变量el
时,它可以正常工作。有什么想法吗?
答案 0 :(得分: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);
});
})
答案 1 :(得分:0)
您不能拥有两个名称相同的变量。 var el
和function el
都称为el
。 JavaScript将函数名称视为赋值函数的变量名(类型)。
此外,您应该使用函数语句而不是函数声明。有关详细信息,请参阅http://kangax.github.com/nfe/。
答案 2 :(得分:0)
我不知道,你想要实现什么,但是“是的,可以使用数组值创建函数”:
var a = ["ab1","aj6","yt5","gf5","js9"];
for (var i = 0; i < a.length; i++) {
window[a[i]] = function(){
};
}
在此之后,您有5个具有"ab1","aj6","yt5","gf5","js9"
名称的全局函数。
答案 3 :(得分:-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);
});
}