2012-07-05 7 views
5

Einfache html:d3js selection.each() Callback-Gruppe Argument

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

Und js:

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

Ausgang:

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

Was ist das neueste Argument (0)? Laut Quellcode ist dies eine Gruppe, aber ich kann nichts über Selektorgruppen in der d3 Dokumentation finden.

Danke.

Antwort

6

Es ist für verschachtelte Selektoren: http://bost.ocks.org/mike/nest/

z.B. für diese HTML:

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

Lassen Sie uns wählen td:

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

el ist [ Array[2] , Array[2] ]

und el.each:

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

Ausgang:

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

+1 gute Antwort. Um es ein wenig auszudehnen, denke an es als: 'Datum, i, j ', wobei' j' die Gruppierung ist. Wenn es nur eine Gruppe gibt, wird die Gruppierung 0 sein. – Wex