首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >D3放大jquery按钮单击

问D3放大jquery按钮单击
EN

Stack Overflow用户
提问于 2016-02-12 09:12:21
回答 2查看 1.9K关注 0票数 4

我正在尝试实现一个简单的d3 svg缩放功能。双击矩形,缩放功能运行良好。

现在,我正尝试在jquery按钮单击函数上实现相同的功能。但是我在控制台中得到了跟踪错误。

Uncaught TypeError: Cannot read property 'translate' of null以下是我的代码。

​

代码语言:javascript
复制
var zoom = d3.behavior.zoom()
  .scaleExtent([1, 10])
  .on("zoom", zoomed);

var vis = d3.select("#svg-canvas").append("svg")
  .attr("width", "550")
  .attr("height", "200")
  .append("g")
  .attr("class", "svg-container")
  .attr("transform", "translate(10,10)")
  .call(zoom);

vis.append("rect")
  .attr("x", 10)
  .attr("y", 10)
  .attr("width", 100)
  .attr("height", 40)
  .style("fill", "#444");

function zoomed() {
  d3.select(".svg-container").attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}

$(document).ready(function() {
  $("#zoom").click(function() {
    zoomed();
  });
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="svg-canvas">

</div>

<button id="zoom">
  Zoom
</button>

​

功能不起作用。我做错了什么,或者是否有可能实现这样的功能?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-12 09:20:59

单击时,您没有d3事件集,因为没有事件从d3开始,因此您必须自己指定缩放/转换参数

代码语言:javascript
复制
function zoomClicked(translate, scale) {
    d3.select(".svg-container").attr("transform", "translate(" + translate + ")scale(" + scale + ")");
}

 $(document).ready(function() {
     $("#zoom").click(function() {
         zoomClicked(4, 4);
     });
 });
票数 4
EN

Stack Overflow用户

发布于 2016-02-12 09:23:18

D3有自己的双击事件生成机制。由于在D3不处理的元素上有单击处理程序,所以没有d3.event。

代码语言:javascript
复制
  d3.select(".svg-container")
    .attr("transform", scale(2)");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35358666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档