Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击时运行保存在变量中的回调_Javascript_Jquery_Button_Callback - Fatal编程技术网

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

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

我有一个包含许多按钮(标签和回调)的对象,我希望动态地将这些按钮添加到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);
    });
}
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);
});
})(回调);
}

谢谢你的提示。这帮我解决了这个问题。我会编辑我的问题。如果你觉得有必要发布解决方案,你应该把它放在答案中,而不是问题中。