【问题标题】:Populating select option dynamically with jquery使用 jquery 动态填充选择选项
【发布时间】:2011-12-26 18:55:39
【问题描述】:

会有两个下拉列表,

首先是移动供应商列表,第二个是每个供应商的型号列表。

当从第一个下拉列表中选择供应商时,第二个下拉列表应动态填充该供应商的相关模型。 这是移动网站,最好使用jquery-mobile

第二个的选项值将在 json 映射中。

  <select class="mobile-vendor">
    <option value="motorola">Motorola</option>
    <option value="nokia">Nokia</option>
    <option value="android">Android</option>
  </select>

 selectValues = {"nokia"   : {"N97":"download-link", 
                              "N93":"download-link"}, 
                 "motorola": {"M1":"download-link",
                              "M2":"download-link"}}

<select class="model">
    <option></option>
</select>

例如,如果用户在第一个下拉列表中选择诺基亚,则第二个下拉列表应该有 N97、N93 作为选项。

【问题讨论】:

  • 您的 json 数组有问题,它无法按照您的预期工作。每个项目只能有一个具有相同名称的实例,请看这里:jsfiddle.net/niklasvh/uJUS2

标签: javascript jquery jquery-mobile


【解决方案1】:

编辑:新的 javascript 考虑到您更新的 json 结构:

$(function() {
    var selectValues = {
        "nokia": {
            "N97": "http://www.google.com",
            "N93": "http://www.stackoverflow.com"
        },
        "motorola": {
            "M1": "http://www.ebay.com",
            "M2": "http://www.twitter.com"
        }
    };

    var $vendor = $('select.mobile-vendor');
    var $model = $('select.model');
    $vendor.change(function() {
        $model.empty().append(function() {
            var output = '';
            $.each(selectValues[$vendor.val()], function(key, value) {
                output += '<option>' + key + '</option>';
            });
            return output;
        });
    }).change();

    // bonus: how to access the download link
    $model.change(function() {
        $('#download-link').attr('href', selectValues[$vendor.val()][$model.val()]).show();
    });
});

工作示例可用in jsFiddle

请注意,这应该适用于 jQuery mobile。

【讨论】:

  • 我已经更新了 json 地图,你能检查并更新你的答案吗?感谢您的回答!
  • @KugathasanAbimaran 嵌套对象中每个属性的“下载链接”值有什么意义?
  • 一旦用户从第二个下拉列表中选择项目,他将能够下载与供应商型号对应的应用程序。
  • @KugathasanAbimaran 更新了完整的代码,也更新了 jsFiddle。应该做你需要的。
  • 此方法适用于http://code.jquery.com/jquery-latest.js,但不适用于http://code.jquery.com/mobile/latest/jquery.mobile.min.js
猜你喜欢
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多