2011-09-19 29 views
0

我打算在jQuery中構建小插件 - 只是想檢查一下您的意見是否jQuery是工作的工具。理論上的jQuery插件

基本上,我會有兩個textareas,我會輸入字符串(逗號或新行分隔)。

e.g:
textarea的1項內容:1,2,3,4
textarea的2內容:a,b,c,d

按下提交我想jQuery來創建every possible combination (1a,1b,1c,1d,2a,2b etc....)並返回在A-> Z順序後。

Q1。可以jQuery檢測新行嗎?(沒有html標記)

Q2。每個清單將有100 - 1000個條目。 jQuery會對付它嗎?

Q3。你知道任何jQuery的功能,如every possible combination做什麼或將是循環?

任何建議非常感謝。

+1

jQuery不能幫你完成這些任務,但你可以堅持使用普通的JavaScript。 –

+0

(1)是的,(2)是的,(3)是的,我想,儘管它實施起來很簡單 –

+1

功能更適合這種情況。 – amosrivera

回答

3

一個簡單的實現:

function getValues(id1, id2, delimiter) {  
    var elem1, elem2, 
     arr1, arr2, 
     i, j, 
     result = []; 

    elem1 = document.getElementById(id1); 
    elem2 = document.getElementById(id2); 
    arr1 = elem1.value.split(delimiter); 
    arr2 = elem2.value.split(delimiter); 

    for (i = 0; i < arr1.length; i += 1) { 
     for (j = 0; j < arr2.length; j += 1) { 
      result.push(arr1[i].trim() + arr2[j].trim()); 
     } 
    } 

    return result.sort().toString(); 
} 

現場演示:http://jsfiddle.net/YvgAM/5/

說明:

該函數接受三個參數:

  • 前兩個參數是兩個TEXTAREA元素的ID名稱,
  • 第三個參數是分隔符(字符串),例如。 ',''\n'

首先,你得到的元素,然後你抓住他們的內容(文本),並使用提供的分隔符分割成一個數組。

現在,您只需使用兩個嵌套的for循環來構造一個值數組。

最後,您對該數組進行排序並將其轉換爲字符串。

+0

太棒了!你能花一分鐘時間通讀代碼嗎?有時我仍然很難完全理解代碼的工作方式。 – Iladarsda

+0

不錯!一個建議:不要傳入ID,而要傳入元素本身。即使元素沒有ID,它也可以工作。 – jimbojw

+0

@NewUser當然,我已經更新了我的答案... –

0

這聽起來像jQuery的一個很好的工作;一般來說,當你想要一些可重用的東西時,jquery插件可以用$(「some-selector」)實例化。

  1. jQuery的不提供任何原生的方式來檢測換行,你需要自己在哪個角色你喜歡(或者逗號,新的生產線,空格等)分割的字符串。

  2. 在這裏,我不太關心jQuery與對象之間的耦合關係,以及更多關於你的代碼如何處理它的問題。 jQuery爲集合提供了迭代器,但是您可以編寫它在每個元素上調用的函數。確保你傳遞給jQuery.each的函數足夠快。

  3. 如果你不關心唯一性,你可以使用嵌套循環。例如:

(僞代碼)

combinations = []; 
for (var i in collection_1) { 
    for (var j in collection_2) { 
    combinations.append(i + j); //assumes string addition 
    } 
}