首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jQuery对动态生成的SELECT元素中的数据进行排序?

如何使用jQuery对动态生成的SELECT元素中的数据进行排序?
EN

Stack Overflow用户
提问于 2013-01-01 06:22:12
回答 1查看 608关注 0票数 2

我使用JQuery填充SELECT元素,以减少输出标记的大小。

一切都按我想要的方式工作,只有一件事例外:排序。

看起来,当我在下面的代码中找到.each时,JQuery是按val值而不是text值排序的。我希望列表按text值排序,或者更理想的情况是,按照在变量dyn_list_product中生成列表的顺序排序。

我如何才能做到这一点呢?

非常感谢。

代码语言:javascript
复制
<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="utf-8">
    <title>Sample Code</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type = "text/javascript" >
      $(document).ready(function(){
      var dyn_list_product = { 10075:'abc', 10635:'def', 10246:'ghi', 10245:'jkl', 10076:'mno', 10642:'pqr', 10995:'stu', 10255:'vwx', 10230:'yz' };
      $('.jquery_list_product').append( $('<option></option>').val('').html('----------') );
      $.each( dyn_list_product , function(val, text) { $('.jquery_list_product').append( $('<option></option>').val(val).html(text) ); });
      })
    </script>
  </head>

  <body>
    <select name="insert-1[]" class="jquery_list_product"></select>
    <select name="insert-2[]" class="jquery_list_product"></select>
    <select name="insert-3[]" class="jquery_list_product"></select>
  </body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2013-01-01 06:25:13

jQuery代码没有对任何内容进行排序。在JavaScript中,对象键的迭代顺序是未定义的。也就是说,以某种顺序定义属性这一事实与.each()函数将它们传递给处理程序的顺序无关。

请改用数组:

代码语言:javascript
复制
var dyn_list_product = [ { key: '10075', val: 'abc'}, { key: '10635', val: :'def'}, ... ];

然后,您的.each()循环将如下所示:

代码语言:javascript
复制
$.each( dyn_list_product , function(index, obj) {
    $('.jquery_list_product').append( $('<option></option>').val(obj.key).html(obj.val) ); });
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14106507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档