Ho creato il seguente documento:Come accedere al parentNode di una selezione d3.js?
<g>
<path class="line" name="gene_1" stroke="#aec7e8" d="M10.47..."></path>
<path class="line" name="gene_2" stroke="#aec7e8" d="M10.47..."></path>
<path class="line" name="gene_3" stroke="#aec7e8" d="M10.47..."></path>
...
</g>
Quando ho mouse su ogni percorso voglio aggiungere lo scorso all'interno della svg: g in modo che appaia in cima alle altre linee, ma non so come selezionare correttamente la parentNode:
function onmouseover(d, i){
var current_gene_name = d3.select(this).attr("name"),
current_gene_pcp = d3.select(".line[name=" + current_gene_name + "]");
p1 = this.parentNode
p2 = current_gene_pcp[0].parentNode
p3 = current_gene_pcp[0][0].parentNode
//p.appendChild(this);
}
p1 funziona, ma ho voluto fare in modo che "questo" è un .Line, così ho preferito usare current_gene_pcp, ma p2 restituisce <html></html>
come il genitore, anche se p3 restituisce l'appropriato <g></g>
. Quest'ultima versione sembra un bug che aspetta di accadere. C'è un modo migliore?
Questo comportamento è instabile. Quando provo questo in Chrome in combinazione con gli stili ': hover', gli stili vengono applicati correttamente. Quando provo questo in Firefox (v20), gli stili non vengono applicati affatto. Quando rimuovo questo codice 'mouseover', gli stili sono applicati correttamente in Firefox. Immagino che questo sia causato dal passaggio del mouse di un elemento durante il tentativo di rimuovere se stesso prima di essere ricollegato come ultimo figlio del suo DOM. –