使用d3.js在地图上创建工具提示

时间:2013-12-03 14:50:15

标签: javascript jquery d3.js tooltip tipsy

我正在扩展这个例子 http://bl.ocks.org/tommyskg/6111032

每当我点击它时,我正在努力添加工具提示:我使用d3.JS
http://onehackoranother.com/projects/jquery/tipsy/#download

      // Add a circle.
      marker.append("svg:circle")
                        .attr("r", 4.5)
                        .attr("cx", padding)
                        .attr("cy", padding)
                        .on("click",info)


     function info(){
        d3.select(this).tipsy({live: true});
      };

但我收到此错误:  未捕获的TypeError:对象[object Array]没有方法'tipsy'

似乎我两次使用JQuery

 

我怎样才能减少这种冲突?

第二种方式:

我认为地图存在问题,因为工具提示可能隐藏在地图后面。当它显示相对时,我做了工具提示的位置。我手动编码。

div.tooltip {
  color: #222; 
  background: #fff; 
  padding: .5em; 
  text-shadow: #f5f5f5 0 1px 0;
  border-radius: 2px; 
  box-shadow: 0px 0px 2px 0px #a6a6a6; 
  opacity: 0.9; 
  position: relative;
}

var tooltip = d3.select("#map").append("div")

  function info(){
            tooltip.attr("class", "tooltip");
          };

     marker.append("svg:circle")
                            .attr("r", 4.5)
                            .attr("cx", padding)
                            .attr("cy", padding)
                            .on("click",info)

但我无法达到效果?有什么想法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题一

tipsy是一个jQuery插件,因此您需要将DOM元素包装为jQuery对象(而不是d3选项)才能访问{{1} 1}}功能:

tipsy

问题二

我怀疑您要将function info () { $(this).tipsy({live: true}); } 附加到div元素。这是不允许的。

另外,我认为工具提示应该显示得很好:http://bl.ocks.org/ilyabo/1373263