Javascript 单击时运行保存在变量中的回调
我有一个包含许多按钮(标签和回调)的对象,我希望动态地将这些按钮添加到DOM中:Javascript 单击时运行保存在变量中的回调,javascript,jquery,button,callback,Javascript,Jquery,Button,Callback,我有一个包含许多按钮(标签和回调)的对象,我希望动态地将这些按钮添加到DOM中: var buttons = { 'Save': function() { return false; }, 'Abort': function() {} }; for(label in buttons) { $('#buttonbar').append('<button>' + label + '</button>'); var c
var buttons = {
'Save': function() {
return false;
},
'Abort': function() {}
};
for(label in buttons) {
$('#buttonbar').append('<button>' + label + '</button>');
var callback = buttons[label];
$('#buttonbar button:last-child').click(function() {
//var result = callback();
alert(callback);
});
}
var按钮={
“保存”:函数(){
返回false;
},
“中止”:函数(){}
};
用于(按钮中的标签){
$('#buttonbar')。附加(''+标签+'');
var回调=按钮[标签];
$(“#按钮栏按钮:最后一个子项”)。单击(函数(){
//var result=callback();
警报(回调);
});
}
但是不管我点击哪个按钮,变量回调总是包含最后一个按钮的函数。看
有什么办法解决这个问题吗?多亏我找到了解决方案:
var buttons = {
'Save': function() {
return false;
},
'Abort': function() {}
};
for(label in buttons) {
$('#buttonbar').append('<button>' + label + '</button>');
var callback = buttons[label];
(function(cb) {
$('#buttonbar button:last-child').click(function() {
alert(cb);
});
})(callback);
}
var按钮={
“保存”:函数(){
返回false;
},
“中止”:函数(){}
};
用于(按钮中的标签){
$('#buttonbar')。附加(''+标签+'');
var回调=按钮[标签];
(功能(cb){
$(“#按钮栏按钮:最后一个子项”)。单击(函数(){
警报(cb);
});
})(回调);
}
谢谢你的提示。这帮我解决了这个问题。我会编辑我的问题。如果你觉得有必要发布解决方案,你应该把它放在答案中,而不是问题中。