jQuery .each()和CodeMirror

时间:2016-08-03 12:05:28

标签: jquery each codemirror

我在许多不同的标签中创建CodeMirror textareas,我需要在点击中创建的标签中循环显示textareas。我找到了元素,这是我需要转换的textareas。我试图使用jQuery .each()来完成它们并转换为CodeMirror:

var queryBuilder = $(tabPanelDiv).find(".QueryBuilder");
queryBuilder.each(function(index, el) {            
    var editorQuery = CodeMirror.fromTextArea($(el)[index], {
         lineNumbers: true,
         tabMode: "indent",
         mode: "text/x-sql",
         theme: "eclipse"
    });
    queryArr.push(editorQuery);
});

我遇到的问题是我缺乏使用.each()的经验以及如何将元素插入CodeMirror.fromTextArea()。在此.each()中,转换适用于第一个textarea,但第二个转换为CodeMirror代码,因为未定义。我有5个textareas但我错误地使用index, el参数。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

忽略index。在each内,el参数该索引处的正确元素,index参数只是让您可以知道您在集合中的位置你正在迭代。

您应该只使用el,而不是$(el)[index]

queryBuilder.each(function(index, el) {            
    var editorQuery = CodeMirror.fromTextArea(el, {
      ...
    });
    queryArr.push(editorQuery);
});

另外,因为您将一个(元素)数组转换为另一个数组(CodeMirror对象),您应该使用map,而不是each

var queryArr = queryBuilder.map(function(index, el) {            
    return CodeMirror.fromTextArea(el, {
      ...
    });
});