我想获取用逗号分隔的变量中所有字段的值。例如:1,2,3
以下代码可以正常工作,但它也只在最后一个值的末尾添加逗号。我该如何删除?
fields = $('.wrap').find('.text');
var data = '';
fields.each(function() {
var value = $(this).val();
if ( value != '' ) {
data += ' ' + value + ',';
}
});
alert(data);
的jsfiddle: http://jsfiddle.net/cn5Gt/
答案 0 :(得分:4)
我总是使用数组来做这些事情:
var fields = $('.wrap').find(".text[value!='']");
var data = [];
fields.each(function() {
data.push($(this).val());
});
alert(data.join(','));
答案 1 :(得分:3)
您可以在数组上推送元素,而不仅仅使用join()方法。
fields = $('.wrap').find('.text');
var data = [];
fields.each(function() {
var value = $(this).val();
if ( value != '' ) {
data.push(value);
}
});
alert(data.join());
答案 2 :(得分:2)
尝试下面的代码,使用i
这是循环索引,并根据jQuery对象的长度进行测试。
fields = $('.wrap').find('.text');
var length = fields.length;
var data = '';
fields.each(function(i) {
var value = $(this).val();
if ( value != '' ) {
if(i === length-1) { //The last one
data += ' ' + value;
} else {
data += ' ' + value + ',';
}
}
});
更新了fiddle
答案 3 :(得分:1)
答案 4 :(得分:1)
答案 5 :(得分:1)
这样的事情怎么样:
var data = $('.wrap').find('.text')
.map(function(i,el){ return el.value || null; })
.get().join(", ");
演示:http://jsfiddle.net/cn5Gt/11/
jQuery的.map()
method将“通过函数传递当前匹配集合中的每个元素,生成一个包含返回值的新jQuery对象。”您仍然可以在回调函数中包含if ( value != '' ) {
测试,因为如果您的函数返回null
或undefined
,则.map()
将不会使用该特定值。 (我上面用|| null
作为if / else结构的快捷方式。)
在结果上调用.get()
(或.toArray()
),您将拥有一个实际数组,这意味着您可以使用数组.join()
method形成一个值为逗号的字符串分离。
如果您需要对每个项目进行其他处理,除了获取值之外,您可以坚持使用.each()
循环并将值添加到您在循环之后加入的数组(就像其他一些答案一样) ),或者只使用字符串.slice()
方法删除尾随的逗号和空格字符。
答案 6 :(得分:0)
试试这个:
使用长度函数确定每个
的位置var fields = $('.wrap').find('.text'); var len = fields.length; var data = ''; fields.each(function(index, element) { var value = $(this).val(); if ( value != '' ) { data += ' ' + value; if (index != len - 1) { data += ','; } } }); alert(data);