2016-08-03 3 views
0

Я создаю текстовые поля CodeMirror во многих разных вкладках, и мне нужно прокручивать текстовые поля на вкладке, которая создается кликом. Я нашел элементы, это текстовые области, которые мне нужно преобразовать. Я пытаюсь использовать JQuery .each(), чтобы пройти через них и конвертировать в 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. Кто-нибудь может мне с этим помочь?

ответ

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, { 
     ... 
    }); 
}); 
+0

Thx это было. Я думал, что попробовал просто иметь параметр el, но у меня, вероятно, было $ перед ним или что-то в этом роде. Thx для подсказки с картой, я попытаюсь использовать это вместо этого. –