2014-02-22 79 views
1

我已经在这里看到了其他的例子,但没有一个适合我的问题。使用jQuery遍历select元素中的选项

我有一个函数接收一个select元素,我需要它来吐出一个JSON格式的字符串。

例子:

foo = buildOptionStructure($('.select-test')); 

// Returns string of JSON formatted option data from select 
// options in element. 
function buildOptionStructure(selectElement) { 
    options = "["; 
    selectElement.find('option').each(function(option, i) { 
     console.log(this); // Return my html in console. 
     console.log(option); // Return a zero based index! 
     console.log("I VALUE: " + option); // Returns same zero based index! 
     options += "{"; 
     options += "name:'" + option.text() + "'"; 
     options += "},"; 
    }); 
    options += "]" 

    return options; 
} 

我只需要建立一个串出在给定的选择元素的选项。我在这里错过了什么?

+0

你错过了在该代码的报价。你也没有从你的函数返回任何东西。 –

+0

@james:我编辑了缺少引号的问题。 – sergserg

回答

2
function buildOptionStructure(selectElement) { 
    var options = []; 
    selectElement.find('option').each(function(k,v) { 
     options.push({name: $(this).val()});   
    }); 
    return options 
} 

var foo = buildOptionStructure($('.select-test')); 

console.log(foo); 

要获取JSON字符串,您可以使用JSON.stringify(foo)

FIDDLE

+0

不错。他需要一个json字符串,但是......你如何将数组放入json字符串? –

+0

JSON.stringify(foo) – Tomanow

+0

我明白。我建议你编辑OP的好处的问题,而不是我的... –

1

你访问索引时您尝试使用option.text()要访问元素的文本,使用:

options += "name:'" + $(this).text() + "'";