2014-02-22 3 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; 
} 

난 그냥 주어진 select 요소의 옵션 중 문자열을 구축 할 필요가있다. 내가 여기서 무엇을 놓치고 있니?

+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.stringify(foo)을 사용할 수 있습니다.

FIDDLE

+0

니스. 그는 json 문자열이 필요합니다 ... 어떻게 배열을 json 문자열로 가져 옵니까? –

+0

JSON.stringify (foo) – Tomanow

+0

이해합니다. 나는 당신이 OP의 이익을위한 질문을 편집 할 것을 제안했는데 내 것이 아니라 ... –

1

당신이 요소의 텍스트에 액세스하려면 option.text()을 사용하려고 할 때 인덱스를 액세스하는, 이것을 사용 : 당신은 그 코드에서 견적을 놓치고

options += "name:'" + $(this).text() + "'"; 
관련 문제