我正在尝试实现一个简单的 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/