ユーザーがカスタム JavaScript 関数を定義し、その関数を適切に実行するボタンをユーザー インターフェイスに追加できるようにする Web アプリを作成しようとしています。
これがコードのサンプルです
var customCommands = {
command1: {
text: 'Hello Console',
cFunctionRun: function() {
console.log('hello Console!');
}
},
command2: {
text: 'Hello World',
cFunctionRun: function() {
alert('hello World!');
}
}
}
次に、ループしてボタンを作成し、ユーザー インターフェイスに追加する小さな関数を作成しました。問題は、ボタンをクリックするよりも要素をユーザーインターフェイスに追加すると、何も機能しないことです...
これが私が試した方法の1つです
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/があり、何が起こるかを示しています。