我正在许多不同的选项卡中创建CodeMirror文本区域,我需要循环浏览单击时创建的选项卡中的文本区域。我已经找到了元素,这就是我需要转换的文本区域。我正在尝试使用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()
中,转换适用于第一个文本区域,但第二个始终转到未定义的CodeMirror代码。我有所有的5个文本区域,但我使用index, el
参数的方式不对。有人能帮我吗?
忽略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, {
...
});
});