我有一个包含许多按钮(标签和回调)的对象,我动态地想要添加到DOM中:
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);
});
}
但无论我点击哪个按钮,变量回调总是包含最后一个按钮的功能。请参阅this fiddle。
任何想法如何解决?
答案 0 :(得分:0)
感谢the hint given by Barmar我找到了解决方案:
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);
}