2012-12-21 15 views
6

Mam wybraną wielokrotność z niektórymi opcjami. Każda opcja ma wiele atrybutów danych. Chciałbym utworzyć tablicę zawierającą każdą z jej wartości danych. Na przykład mój kod wygląda trochę tak:JQuery: Utwórz tablicę złożoną z atrybutów danych moich wybranych opcji.

<select multiple id='my_select'> 
<option data-my_id='1' data-my_parent='3' data-my_name='option1'>My first option</option> 
<option data-my_id='2' data-my_parent='3' data-my_name='option2'>My second option</option> 
<option data-my_id='3' data-my_parent='3' data-my_name='option3'>My third option</option> 
</select> 

a wynik szukam musi być coś takiego:

[1,3,option1], [2,3,option2], [3,3,option3] 

ja zbadali, jak utworzyć tablicę z jednym z wartość atrybutu danych dla każdej opcji, dając mi to [1,2,3], ale nie udało mi się wymyślić tego, czego potrzebuję.

Wielkie dzięki!

Odpowiedz

10
var array = $("#my_select > option").map(function() { 
    return [$.map($(this).data(), function(v) { 
     return v; 
    })]; 
}).get(); 

DEMO:http://jsfiddle.net/nQ6mE/

+0

Działa świetnie! Dziękuję za szybką odpowiedź! – murielg

+0

@murielg Nie ma za co! – VisioN

+0

czy można zastosować addClass w tej tablicy –

6
var arr = []; 
$('#my_select option').each(function(){ 
    var $this = $(this); 
    arr.push([ $this.data('my_id'), $this.data('my_parent'), $this.data('my_name') ]); 
}); 
+0

Dziękuję za szybką odpowiedź! To też działa świetnie! Lubię odpowiedź @VisioN nieco lepiej, ponieważ jestem w stanie uzyskać WSZYSTKIE atrybuty danych bez konieczności wykonywania $ this.data ("value") dla każdego z nich. – murielg

Powiązane problemy