2012-07-05 13 views
5

html simple:d3js argumento selection.each() Grupo de devolución de llamada

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

y JS:

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

Salida:

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

¿Cuál es el último argumento (0)? Según el código fuente, este es un grupo, pero no encuentro nada sobre los grupos de selector en la documentación de d3.

Gracias.

Respuesta

6

Es para selectores anidados: http://bost.ocks.org/mike/nest/

por ejemplo para este HTML:

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

seleccione td Vamos:

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

EL es [ Array[2] , Array[2] ]

y el.each:

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

Salida:

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

+1 buena respuesta. Para expandir un poco, piense en ello como: 'datum, i, j', donde' j' es la agrupación. Si solo hay un grupo, la agrupación va a ser 0. – Wex

Cuestiones relacionadas