我正在尝试创建一个 Web 应用程序,该应用程序将允许用户定义自定义 JavaScript 函数,然后向他们的用户界面添加一个按钮,该按钮可以很好地执行该函数。
这是代码示例
var customCommands = {
command1: {
text: 'Hello Console',
cFunctionRun: function() {
console.log('hello Console!');
}
},
command2: {
text: 'Hello World',
cFunctionRun: function() {
alert('hello World!');
}
}
}
然后我写了一个小函数,它循环并构建按钮并将它们添加到用户界面。问题是当我将元素附加到用户界面而不是单击按钮时没有任何效果......
这是我尝试过的方法之一
for (var cmd in customCommands) {
command = customCommands[cmd];
button = $('<button/>').html(command.text).on('click',
function(){
console.log(command.text);
command.cFunctionRun();
}
);
}
buttonContainer.append(button);
现在我的循环构建一切都很好,甚至可以.on('click')
正常工作,但它总是显示最后添加的命令的文本?
这是http://jsfiddle.net/nbnEg/显示发生了什么。