作为 JavaScript 新手,我偶然发现了这个简单的问题,我需要为数组中的每个项目创建一个对象。
更具体地说,我想为某些文本区域创建一个所见即所得的文本编辑器,然后监听这些编辑器对象的输入。
一个元素的代码是:
// Make an element a text editor area.
var editorArea = new Edicy.TextEditorView({el: $('.foo')});
// Save on input
editorArea.editor.on('aftercommand:composer', function() {
pageData.set('key', 'value');
});
由于我有很多这样的区域,我想使用 jQuery.each() 来启动这些文本编辑器并根据唯一的监听器,使用元素的 data-id 属性:
$('#c-success-tabs-content .tab-pane').each(function(){
var successID = $(this).attr('data-id');
successesList.push(successID);
var editorArea[successID] = new Edicy.TextEditorView({el: $('.foo')});
editorArea[successID].editor.on('aftercommand:composer', function() {
pageData.set('key', 'value');
});
});
由于命名方案“var editorArea[successID]”和监听器“editorArea[successID]”在 JavaScript 中是不可能的,最佳解决方案是什么?
最佳答案
使用对象:
var editorAreas = {}
$('#c-success-tabs-content .tab-pane').each(function(){
var successID = $(this).attr('data-id');
successesList.push(successID);
editorAreas[successID] = new Edicy.TextEditorView({el: $('.foo')});
editorAreas[successID].editor.on('aftercommand:composer', function() {
pageData.set('key', 'value');
});
});
for(var id in editorAreas){
console.log(id, editorAreas[id])
}
关于javascript - 数组中每个元素的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35001388/