2012-12-21 12 views
6

いくつかのオプションで選択肢があります。 各オプションには複数のデータ属性があります。 それぞれのデータ値を含む配列を作成したいと思います。 JQuery:選択したオプションのデータ属性で構成された配列を作成します。

<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> 

そして、私はこのような何かする必要があります探しています結果

:私はのいずれかで配列を作成する方法を研究している

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

例えば私のコードは次のようにたくさん見えますそれぞれのオプションのデータ属性値は、私にこの[1,2,3]を与えていますが、私は必要なものを考え出すのに失敗しました。

ありがとうございます!

答えて

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

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

+0

素晴らしい作品です!素早い答えをありがとう! – murielg

+0

@murielgよろしくお願いします! – VisioN

+0

この配列にaddClassを適用することは可能です –

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

は、高速応答をありがとう!これは素晴らしい作品です!私はすべてのデータ属性を得ることができるので、@ VisioNの答えが少し良くなるのが好きです。なぜなら、すべての単一のデータに対して$ this.data( '値')を使わなくてもいいからです。 – murielg

関連する問題