单击时运行保存在变量中的回调

时间:2014-01-23 14:00:08

标签: javascript jquery button callback

我有一个包含许多按钮(标签和回调)的对象,我动态地想要添加到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

任何想法如何解决?

1 个答案:

答案 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);
}