【问题标题】:Dynamically adding options to a jQuery Mobile Optgroup向 jQuery Mobile Optgroup 动态添加选项
【发布时间】:2014-04-22 04:39:57
【问题描述】:

我在动态添加选项时遇到问题。目前我的 html 中有一个包含一些硬编码值的 optgroup:

<select id="opt1" multiple="multiple" data-native-menu="false" data-icon="grid" data-iconpos="left">
                <optgroup label="optgroup options" id = "opt">
                    <option value="option1">Option1</option>
                    <option value="option2">Option2</option>
                </optgroup>
            </select>

我想从我的数据库中动态添加选项。目前我正在尝试这样做:

db.transaction(function(transaction) {

transaction.executeSql('SELECT input FROM ListInput WHERE input != ""', [],
                       function(transaction, result) {
                       if (result != null && result.rows != null) {
                       for (var i = 0; i < result.rows.length; i++) {
                       var row = result.rows.item(i);
                       $('#opt').append('<option>'+ row['input'] + '</option>');

                       }

                       }

                       $("#opt").selectmenu().selectmenu('refresh');
                       },errorHandler);
},errorHandler,nullHandler);

但是,这并没有正确添加选项。该选项只出现在选择菜单上,当我单击菜单查看选项时,它没有自己的复选框,根本不显示。有什么想法吗?

【问题讨论】:

    标签: jquery sqlite jquery-mobile


    【解决方案1】:

    您只是在错误的 DOM 元素上调用 selectmenu('refresh')。您应该在选择而不是选项组上调用它。所以改变这一行:

    $("#opt").selectmenu().selectmenu('refresh');
    

    $("#opt1").selectmenu('refresh');
    

    DEMO

    【讨论】:

    • 非常感谢,这几乎可以完美运行。只有一件事,当我动态添加第一个选项时,它显示为 optgroup 的标题,而不是其中的选项。在您的演示中,“new option0”也是如此。有什么办法可以改变吗?
    • @Mohd,看起来 jQM 正在将 data-placeholder="true" 添加到第一个没有值属性的添加项目中。所以你可以给你的选项值属性:jsfiddle.net/ezanker/Lcbmh/2 或者只提供一个静态占位符:jsfiddle.net/ezanker/Lcbmh/1
    猜你喜欢
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-01
    相关资源
    最近更新 更多