【问题标题】:Jquery/Javascript refactoring basicsJquery/Javascript 重构基础
【发布时间】:2012-03-23 07:41:59
【问题描述】:

在谈到 JavaScript/JQuery 时,我仍然认为自己是个新手。我将如何将其折射为我可以重用的方法/函数。

$.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','描述'),显然不起作用,我不知道如何去吧?

【问题讨论】:

    标签: javascript jquery asp.net-mvc model-view-controller


    【解决方案1】:

    为什么不返回具有通用属性名称的 json 对象?这将大大简化。

    例如

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

    然后您可以非常轻松地创建所有选项。

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

    【讨论】:

    • 嗯,不止一种给猫剥皮的方法,我会记住这一点。只是出于我自己的好奇心,我想知道这将如何在 javascript 中完成/如果可能的话,因为我仍在学习很多关于 MVC/JQuery 等的知识......
    • 最终选择了您建议的路线,效果很好。谢谢
    • 我相信使用以下语法 j[i]['Lab_LN_ID'] 将允许您通过字符串传递属性。
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2018-11-24
    • 2017-04-22
    • 2016-07-09
    • 1970-01-01
    • 2011-08-28
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多