d3.js, haga clic en vincular a otra dirección URL codificada con variables

He hecho un gráfico de dispersión, y desea agregar un enlace a cada punto.

    chart.selectAll("scatter-dots")
      .data(data)
      .enter().append("circle")
        .attr("cx", function (d) { return x(d.position[0]); } )
        .attr("cy", function (d) { return y(d.position[1]); } )
        .attr("r", 4)
        .style("fill", "#666")
        .style("opacity", 0.5)
    .on("click", function(){
        var url = "http://somelink.com/link.php?id=";
        url += d.link_id;
        //$(location).attr('href', url);
        //window.location = url;    
    });

Funciona si acabo de poner el puro de la Cadena de enlace, tales como
de la ventana.ubicación = «http://stackoverflow.com»
Sin embargo, si puedo agregar consultas a la final de la URL de una variable, la página no redirige.

Ni jquery ni javascript trabajado (como se ha comentado.)

También probé con un archivo js externo, todavía no.

Esto es, en un archivo PHP, si esto ayuda.

  • simplemente resuelto. cambio en(«click», function(d)….
InformationsquelleAutor clerksx | 2012-05-13

1 Kommentar

  1. 8

    Si funciona con una cadena estática, entonces algo está mal con d.link_id. Trate de ver lo que hay dentro, ya sea haciendo alert(d.link_id) o si utiliza un firebug o similares hacer console.log(d.link_id).

    Alternativamente, usted debería uso real de los anclajes para la vinculación de los nodos en lugar de la configuración haga clic en eventos. Esto sería algo como…

    chart.selectAll("scatter-dots")
      .data(data)
      .enter()
      .append("a")
        .attr("xlink:href", function(d) {return "http://somelink.com/link.php?id=" + d.link_id})
        .append("circle")
          .attr("cx", function (d) { return x(d.position[0]); } )
          .attr("cy", function (d) { return y(d.position[1]); } )
          .attr("r", 4)
          .style("fill", "#666")
          .style("opacity", 0.5)

    (Me parece que no puede recordar si esta es la manera exacta de hacerlo, usted puede ser que necesite para guardar los anclajes en una variable y, a continuación, añadir los círculos a ellos.)

    • Gracias, pero simplemente he cambiado la función() a la función(d) y funcionó!!
    • Puedo usar xlink:href en el círculo ojbect pero no funciona! Parece que tenemos que utilizar en(«clic») de la solución. Por cierto, soy nuevo en el D3, ¿cómo puedo agregar un atributo, es decir la url del enlace, y recibe de nuevo en el sobre(«haga clic en»… evento?
    • te gustaría hacer… .on("click", function(){ d3.select(this).attr("your-attribute");}
    • xlink:href parece ser obsoleto ahora.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea