2016-10-27 16 views
0

我对网络编程颇为陌生,它或多或少地像搜索funcion并尝试直到工作正常。所以你有我的技能的想法;)在d3脚本中使用lightbox(fancyBox)的内部链接

我想建立一个d3的可视化(后迈克博斯托克dendrogramm:http://bl.ocks.org/mbostock/4063570)。 在树内,我想使用内部链接指向使用Lightbox脚本(fancyBox:http://fancyapps.com/fancybox/)的隐藏div(id ='test')。

到目前为止,我的D3脚本生成以下的链接代码(从萤火虫复制):

<a class="fancybox" x="10" href="#test"><text class="nodeText" dy=".35em" text-anchor="start" style="fill-opacity: 1;" x="10"test</text> 

当我使用此代码其他地方(甚至在D3-DIV)它可以很好地打开lightbox div。但是当我在d3画布上点击它时,它不起作用。

用于设置节点和它们的属性(以创建上面的代码)的代码是如下:

nodeEnter.append("svg:a") 
     .attr("x", function(d) { 
      return d.children || d._children ? -10 : 10; 
     })  
     .attr("xlink:href", function(d){return d.url;}) // <-- reading the new "url" property 
     .attr('class', 'fancybox') 
    .append("text") 
     .attr("dy", ".35em") 
     .attr('class', 'nodeText') 
     .attr("text-anchor", function(d) { 
      return d.children || d._children ? "end" : "start"; 
     }) 
     .text(function(d) { 
      return d.name; 
     }) 
     .style("fill-opacity", 0); 

此外,当我设置外部URL这个作品也细。但是,当url是'#test'时,它不会。

我无法找到任何有关此类问题的文章(也许我有特殊的欲望?O.o)。是否有另一种方式来设置内部链接或我错过了任何标志?我想知道为什么这可以在D3之外工作,但不在其中。

感谢您的帮助!

回答

0

完成。

nodeEnter.append("image") 
.attr("xlink:href", function(d) { return d.icon; })   

.on("click", function(d){ 
    var link=document.createElement("a"); 
    link.id="lightLink"; 
    link.href= d.url; 
    link.rel="lightbox"; 
    this.appendChild(link); 
    document.getElementById("lightLink").click();  
}) 

.attr("x", "-12px") 
.attr("y", "-12px") 
.attr("width", "24px") 
.attr("height", "24px"); 
+1

完成?如果你详细阐述了这段代码的功能,对未来的访问者会有帮助吗? – rene