我在许多不同的标签中创建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
参数。任何人都可以帮我这个吗?
答案 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, {
...
});
});