javascript - D3 放大 jquery 按钮单击

标签 javascript jquery d3.js

我正在尝试实现一个简单的 d3 svg 缩放功能。双击矩形时,缩放功能工作正常。

现在我正尝试在 jquery 按钮点击功能上实现相同的功能。但是我在控制台中收到以下错误。

未捕获的类型错误:无法读取 null 的属性“翻译” 以下是我的代码。

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();
  });
});
<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>

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

最佳答案

在点击时你没有设置 d3.event,因为没有事件来自 d3,因此你必须自己指定缩放/平移参数

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

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

关于javascript - D3 放大 jquery 按钮单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358666/

相关文章:

javascript - Node.js 和 ws : Easiest way to stream an array

d3.js - 在 d3.js 中反转色标

javascript - SVG,D3 : Understanding stop offset attribute

javascript - 我是d3新手,有什么简单的方法吗?

javascript - 不要将鼠标滚轮滚动传播到 IFRAME 及其内容

javascript - 创建一个新文档,使用聚合对具有特定值的字段进行求和

javascript - Foundation 6 向下钻取动画速度

jquery - 使用 API 数组在我的 html 的每个 h4 上写文本

javascript - 从文本框中动态复制内容

javascript - 我可以将 CORS 任何地方的代码嵌入到我的 javascript/jquery 中吗?