2012-03-23 39 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