2010-10-13 20 views
26

Mam dropdown <select> o id my_dropdown. Pozwolę na wielokrotny wybór. Wiem, jak pobrać wybrane wartości za pomocą jquery:jquery uzyskiwanie wszystkich wartości rozwijanych

var values = $('#my_dropdown').val(); 

Spowoduje to wyświetlenie tablicy wartości, jeśli zaznaczę wiele. Muszę również uzyskać wszystkie wartości z rozwijanego menu, niezależnie od tego, co zostało wybrane. W jaki sposób mogę używać jquery w podobny sposób, aby uzyskać wszystkie wartości w liście rozwijanej z tym identyfikatorem?

+0

lepsze rozwiązanie znaleziono w http://stackoverflow.com/questions/590163/how-to-get-all -options-of-a-select-using-jquery –

Odpowiedz

30

Jak o czymś takim:

var values = []; 
$('#my_dropdown option').each(function() { 
    values.push($(this).attr('value')); 
}); 
5

wygląda następująco:

var values = $('#my_dropdown').children('option').map(function(i, e){ 
    return e.value || e.innerText; 
}).get(); 

Zobacz w działaniu: http://www.jsfiddle.net/YjC6y/16/

referencyjny: .map()

+1

return e.value; (jeśli chcesz wartości zamiast wyświetlanego tekstu) W przeciwnym razie jest to świetne rozwiązanie! +1 –

+0

Zawsze zapominam o funkcji 'map' +1 –

4

Przykład:http://jsfiddle.net/FadHu/

var opts = $('#my_dropdown')[0].options; 

var array = $.map(opts, function(elem) { 
    return (elem.value || elem.text); 
}); 

Element <select> posiada listę opcji w swojej options nieruchomości. Następnie use $.map(), która zwraca tablicę, aby uzyskać właściwość tej opcji: value lub text.

(uwaga $.map() zachowuje się trochę inaczej niż $(element).map(). Może być trochę trudne.)

+1

Podoba mi się powrót do tekstu, jeśli nie ma wartości: p –

+0

@John - Tak, konieczne dla IE6, lub jeśli" wartość "z jakiegoś powodu jest pusta struna. W przeciwnym razie większość przeglądarek podaje "tekst", jeśli nie ma atrybutu "value". – user113716

Powiązane problemy