javascript - 数组中每个元素的变量

标签 javascript jquery

作为 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/

相关文章:

javascript - 为什么这个函数会触发三次?

javascript - 在 three.js 中将贝塞尔曲线转换为平面道路

javascript - 删除导航栏的类 - 正确

javascript - $ 不是函数

javascript - 通过js在div上加载页面后,我的导航栏不会折叠

另一个html页面中的javascript变量

javascript - react 导航 - createBottomTabNavigator 不工作

javascript - 选择前一个隐藏元素

javascript - jquery 下拉菜单不适用于悬停

javascript - 根据变量值检查单选按钮