首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >习惯使用jQuery将列表框中的所有选项转换为逗号分隔的字符串?

习惯使用jQuery将列表框中的所有选项转换为逗号分隔的字符串?
EN

Stack Overflow用户
提问于 2010-11-17 06:44:05
回答 6查看 13.1K关注 0票数 8

其中lb是一个列表框,txtfield是一个文本框,下面的代码获取选项的所有值,将它们放入一个数组中,并将其放入一个逗号分隔的列表中:

代码语言:javascript
运行
复制
var arr = [];
for (var i = 0; i < lb.length; i++) {
    arr[i] = lb.options[i].value;
}
txtfield.value = arr.join(',');

lb.options.toString()显然不起作用,因为它是一个选项数组(值和文本)。我没有找到比这更简洁的东西了。

jQuery有什么方法可以做到这一点?我试着摆弄$(lb).each(),但似乎不能让它以同样的方式工作。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-11-17 06:49:27

代码语言:javascript
运行
复制
txtfield.value = $(lb.options).map(function() { 
                                       return this.value; 
                                   }).get().join(',');

uses .map()通过返回每个数组的value来创建一个option对象,然后使用uses .get()从对象中提取数组。

编辑:正如@Nick Craver在下面的评论中指出的那样,如果您需要获得最佳性能(使用jQuery),使用the $.map() variation会更有意义,因为您已经有了一个集合。See his answer获取详细信息。

编辑:为了获得更好的性能,执行for循环,但是缓存对属性的引用。It makes a difference

代码语言:javascript
运行
复制
var arr = [], opts = lb.options, len = opts.length;
for (var i = 0; i < len; i++) {
    arr[i] = opts[i].value;
}
txtfield.value = arr.join(',');
票数 14
EN

Stack Overflow用户

发布于 2010-11-17 06:50:06

jQuery版本是这样的.map()

代码语言:javascript
运行
复制
var arr = $(lb).find("option").map(function() { return this.value; }).get();
txtfield.value = arr.join(',');

或者像这样使用$.map()会更快一些:

代码语言:javascript
运行
复制
var arr = $.map(lb.options, function(o) { return o.value; });
txtfield.value = arr.join(',');

然而,这两个都是,效率明显低于for循环,请使用您已有的普通JavaScript版本。

票数 6
EN

Stack Overflow用户

发布于 2010-11-17 06:50:53

看看map()..

代码语言:javascript
运行
复制
$('#lbID option').map(function() {
  return $(this).val();
}).get().join(',');
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4199826

复制
相关文章

相似问题

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