2016-08-03 62 views
0

我在許多不同的選項卡中創建CodeMirror textareas,並且需要循環通過點擊創建的選項卡中的textareas。我發現了這些元素,這是我需要轉換的textareas。我試圖使用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()中,轉換對第一個textarea起作用,但第二個轉換對象CodeMirror代碼始終未定義。我有所有5 textareas,但我使用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與地圖的提示,我會嘗試使用它。 –