我已经用jQuery实现了一个菜单,其中的项目和功能是动态分配的。 This code works
但由于我需要在点击选项时隐藏菜单,我改变了
p.click(funcs[i].f);
到
p.click(function(){
menu.hide();
funcs[i].f;
});
在here中,但我得到Uncaught TypeError: Cannot read property 'f' of undefined
,因为变量i超出范围。如何修复此代码?
答案 0 :(得分:0)
试试这个:
(function(idx) {
p.click(function(){
menu.hide();
funcs[idx].f();
});
})(i);
答案 1 :(得分:0)
我建议:
for (var i = 0; i < len; i++) {
(function(i){$('<p />', {
'style' : 'cursor: pointer',
'text' : funcs[i].title,
'click' : function(){
funcs[i].f();
menu.hide();
}
}).appendTo(menu)})(i);
}
上面将i
变量传递到内部范围,并使用稍微不同(由于个人偏好)的方法来创建<p>
元素。