javascript - 如何即时重新排序选择列表?

标签 javascript jquery html

在我的应用程序中,我有一个 HTML 选择框,我可以根据各种用户操作从中删除和添加项目(项目变得可用/不可用)。但是,我还希望所有项目都按首选顺序显示,因此每次将项目返回到选择列表时,我都需要按首选顺序重新排序并选择首选选项。到目前为止我还没有成功。

这是我目前所拥有的:

    function update_select (select_id) {
        // Rebuild given select box with appropriate options
        var s = $(select_id);
        s.empty();
        for (index in order_by_kind(selectable)) {
            var option = selectable[index];
            var s_option = $('<option value="' + option.value + '">' + option.desc + '</option>')
            s.append(s_option);
            if (index == 0) {
              s_option.attr('selected', true);
              console.log(s_option);
            }
        }
    }

如果我记录 order_by_kind() 的结果,选项值将根据需要进行排序。我清空列表的内容并按所需的顺序重建它,但该项目始终位于列表的最后。记录 s_option 显示该选项已设置为选定状态,但该项目从未在 UI 中被选定。我可能做错了什么?

编辑:

我的 order_by_kind() 函数如下,对于那些想要验证它是否正常运行的人:

    function order_by_kind(obj_list) {
        var tmp = [];
        for (index in type_order) {   
          var kind = type_order[index];
          for (obj_index in obj_list) {
            var obj = obj_list[obj_index]
            if (kind == obj.value) {
              tmp.push(obj);
              // break out of the inner loop
              break;
            }
          }
        }
        return tmp
    }

最佳答案

问题是,尽管我正在迭代有序列表,但我仍然引用未排序列表来构建我的选项。

function update_select (select_id) {
    // Rebuild given select box with appropriate options
    var s = $(select_id);
    s.empty();
    // sort and write back the selectable items
    selectable = order_by_kind(selectable);
    for (index in selectable) {
        var option = selectable[index];
        var s_option = $('<option value="' + option.value + '">' + option.desc + '</option>')
        s.append(s_option);
        if (index == 0) {
          s_option.attr('selected', true);
          console.log(s_option);
        }
    }
}

关于javascript - 如何即时重新排序选择列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365137/

相关文章:

javascript - 在 JavaScript 中将对象传递到数组中

javascript - Firefox 扩展中的 GMail 访问

javascript - JQuery:使数组中的一系列字符串按顺序淡入和淡出

javascript - <base> 并链接到一个 ID

html - CSS 下拉菜单正在等待单击该元素,然后悬停有效

javascript - 在 JQuery 中搜索复杂的多维数组

javascript - 外部化脚本时如何在 javascript 中生成正确的 URL

javascript - 单击容器中除一个元素之外的所有元素以进行链接

html - 使所有元素与同一网格对齐并跨越多列

javascript - 无法在 PrestaShop 中引用 HTTPS SVG