在jquery中的$ .each函数中形成一个Json数组

时间:2012-07-25 22:36:56

标签: jquery json

我需要创建一个数组,需要在每个函数的jquery中有自定义索引和值。例如。我需要创建一个这样的数组[4:'sampleIndex1','test':'sampleIndex2'];

但是在使用每个函数时,jquery采用'4'索引将是一个数组剩余索引的第四个索引0,1,2,3将一个值设置为空。我不需要数组中的0 1 2 3索引。非常感谢即时帮助!!!

提前致谢,

以下是示例代码, 我需要为选择选项创建div元素。

<select name="question" id="myselect">
                            <option value="sample1">What is your father's name?</option>
                            <option value="sample2">What is your pets's name?</option>
                            <option value="sample3">What is your school's name?</option>
                        </select> 

$("#myselect").changeselect({width:400}); 
$.fn.changeselect=function(options){
    var defaults = {  
            width: 600 
    };      
    var options = $.extend(defaults, options); 
    var createhtml="";
var selectarr=new Array();
    $("option",this).each(function(k,v){
selectarr[$(this).attr('value')] = $(this).html();  
            createhtml +="<div id='"+k+"'>"+$(this).html()+"</div>";
    });
console.log(selectarr);
$(this).after(createhtml);

};

它显示[]空数组 它需要像这样 [{“sample1”:“你父亲的名字是什么?”,“sample2”:“你的宠物的名字是什么?”,“sample3”:“你学校的名字是什么?”}]

3 个答案:

答案 0 :(得分:1)

您正在寻找一个javascript对象。

(function () {

  var obj = new Object();

  $('#myselect option').each(function (index, option) {

    var option$ = $(option);

    $('<div/>').attr('id', option$.attr('value')).text(option$.html()).appendTo(/**/);

    obj[option$.attr('value')] = option$.html()

  });

  console.log(obj);

}).call(this)

以下是排序示例:http://jsbin.com/irohow/6/edit

答案 1 :(得分:0)

这不是一个有效的javascript数组。我想你想要更像的东西:

[{4: 'sampleIndex1'}, {'test':'sampleIndex2'}]

答案 2 :(得分:0)

你不能在数组中使用字符串键 - 你应该使用一个对象 -

var a = new Object();
a['4'] = "Some Value";
a['5'] = "Another Value";

这会给你 -

{"4":"Some Value","5":"Another Value"}