使用jQuery迭代select元素中的选项

时间:2014-02-22 23:49:38

标签: jquery select each option

我已经在SO上看到了其他例子,但它们都不适合我的问题。

我有一个接收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;
}

我只需要在给定的select元素中的选项中构建一个字符串。我在这里缺少什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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