2012-03-23 40 views
1

當談到JavaScript/JQuery時,我仍然認爲自己相當新手。我將如何將這種折射轉化爲我可以重複使用的方法/功能。Jquery/Javascript重構基礎知識

$.getJSON('@Url.Action("GetLabNames", "Micro")', null, function(j) { 
    var options = ''; 

    for (var i = 0; i < j.length; i++) { 
     if (elem.value == j[i].Description) { 
      options += '<option selected="selected" value="' + j[i].Lab_LN_ID + '">' + j[i].Description + '</option>' 
     } else { 
      options += '<option value="' + j[i].Lab_LN_ID + '">' + j[i].Description + '</option>' 
     } 
    } 

    $(elem).html(options); 

    $(elem).multiselect({ 
     multiple: false, 
     header: "Select an option", 
     noneSelectedText: 'Lab Name', 
     selectedList: 1, 
     minWidth: 150 
    }); 

}); 

我希望有一個功能類似

CreateMultiSelect(elem, controller, action, text, value); 

但我不能對象屬性傳遞到的功能,例如(Lab_LN_ID,說明),並讓他們的文字(如「Lab_LN_ID」 ,'Description')顯然不起作用,我不知道該怎麼做?

回答

2

爲什麼不返回具有公共屬性名稱的json對象?它會大大簡化這一點。

[{Text: 'text', Value: '1'},{Text: 'text', Value: '1'}] 

然後你就可以很輕鬆地創建您的所有可選項目。

$('<option />', { value: item.Value, text: item.Text }); 
+0

嗯,不止一種剝皮方式,我會牢記這一點。只是爲了我自己的好奇心,編號想知道這將如何在JavaScript中完成/如果可能的話,因爲我仍然學習了很多有關MVC/JQuery等...... – 2012-03-23 08:53:33

+0

結束了去你建議的路線,效果很好。謝謝 – 2012-03-23 09:44:18

+0

我相信使用以下語法j [i] ['Lab_LN_ID']將允許您通過通過字符串中的屬性。 – Betty 2012-03-24 09:36:08