我需要数组或JSON中的选项值列表。 我使用了以下代码。
var compArray=[];
jQuery("#myCombo option").each(function(){
compArray.push(jQuery(this).val());
});
但我不想在循环中迭代选项,因为我的选项列表可以增长。 我用过
JSON.stringify(document.getElementById("myCombo").options)
但是在stringify上它显示了空的JSON对象,尽管我可以从
获得值document.getElementById("myCombo").options[0].value
我必须将请求参数中的这些值传递给服务器,我不想经历循环。 请建议优化的解决方案。
答案 0 :(得分:1)
您可以使用以下自定义序列化程序:
var options = Array.prototype.slice.call(document.getElementById("sel").options),
str = JSON.stringify(options, function(key, value){
if(key === ""){
return value;
}
if(!isNaN(parseInt(key))) {
return value.value;
}
};
或者使用迭代而不为每个选项创建jQuery实例
var options = Array.prototype.slice.call(document.getElementById("sel").options),
str = JSON.stringify(options.map(function(item){return item.value;}));
检查此性能测试:http://jsperf.com/get-options
答案 1 :(得分:0)
But i dont want to iterate the options in a loop because my options list can grow.
这与组合没有任何关系。
每当您向组合添加/删除option
时,只需调用一个函数,该函数随后会从您的数组中添加/删除option
。
function addDeleteListInArray( oVal, addDelete ) {
if( addDelete ) {
// add to array
compArray.push( oVal );
} else {
// delete from array
for( var i=0; i< compArray.length; i++ ) {
if( compArray[ i ] == oVal ) {
compArray.splice( i, 1 );
break;
}
}
}
}
希望这有帮助。