2012-07-05 10 views
5

単純なHTML:d3js selection.each()コールバックグループの引数

<div class="div1"> 
     <div class="test"><span>1</span></div> 
     <div class="test"><span>2</span></div> 
</div> 

とJS:

var el = d3.select(".div1").selectAll(".test"); 
el.each(function() { 
     console.log(arguments); 
}); 

出力:

[undefined, 0, 0] 
[undefined, 1, 0] 

最新の引数(0)とは何ですか?ソースコードによると、これはグループですが、d3のドキュメントでセレクタグループについては何も見つかりません。

ありがとうございました。

答えて

6

それは、ネストされたセレクタのためです: http://bost.ocks.org/mike/nest/

例えばこのHTMLのために:

<table> 
    <tr> 
     <td></td> 
     <td></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
    </tr> 
</table> 

のは、TDを選択してみましょう:

var el = d3.selectAll("tr").selectAll("td"); 

エルは[ Array[2] , Array[2] ]

el.eachです:

el.each(function() { 
    console.log('args',arguments); 
}); 

出力:

args [undefined, 0, 0] 
args [undefined, 1, 0] 
args [undefined, 0, 1] 
args [undefined, 1, 1] 
+0

+1良い答え。少し拡大するには、それを 'datum、i、j'とし、' j'がグループ化されていると考えてください。グループが1つだけの場合、グループ化は0になります。 – Wex