Javascript 禁用SVG拖动
我想禁用此SVG元素的拖放功能,但多次尝试都失败了Javascript 禁用SVG拖动,javascript,svg,d3.js,Javascript,Svg,D3.js,我想禁用此SVG元素的拖放功能,但多次尝试都失败了 /// Define drag beavior var drag = d3.behavior.drag() .on("drag", dragmove); function dragmove(d) { // if the event.x goes over a boundry, trigger "dragend" if(d3.event.x > 200){ //drag.dragend();
/// Define drag beavior
var drag = d3.behavior.drag()
.on("drag", dragmove);
function dragmove(d) {
// if the event.x goes over a boundry, trigger "dragend"
if(d3.event.x > 200){
//drag.dragend();
drag.trigger("dragend");
}
var x = d3.event.x;
var y = d3.event.y;
d3.select(this).attr("transform", "translate(" + x + "," + y + ")");
}
svgContainer.call(drag);
JSFiddle-
我想禁用我的图表或矩阵拖动你可以说,我希望它固定和缩放
我遵循这个JSFIDLE,但它没有任何方法
drag.dragend();
//拖动触发器(“拖动”)
抛出异常-未捕获类型错误:未定义不是函数我已经修复了您的拖动功能。您有两个缩放变量,第一个称为zoomed,它也是一个变量,但直到调用之后才声明,这是不起作用的。在制作SVG后,也会立即调用缩放变量。您在制作SVG后添加了一个“g”元素,然后调用了缩放,因此缩放被放在SVG中的“g”元素上,而不是放在实际的SVG上,这让您感到紧张 JSFIDLE更新:
就像评论中提到的,你的最终目标是什么?为什么要禁用拖动?是否要分别拖动每个矩形?如果是这样的话,你必须在每个单独的矩形上调用拖动:)告诉我你还想让它做什么,我来试试:)为什么不在SVG上调用拖动呢?或者您正在尝试为拖动设置边界?为什么在SVG容器上调用两次“zoom”?此外,是你的缩放功能赋予你拖动功能,而不是你的拖动功能。如果我删除其中一个缩放,它将停止工作,因此不确定为什么在第二个缩放工作时删除第一个缩放。这是因为缩放直到第一次调用之后才创建,所以第一次调用不知道缩放是什么。因为它是一个变量,所以在调用它之前必须先创建它。如果你把它作为一个函数,你可以把它放在任何地方:)你的最终目标是什么?您想通过禁用平移来做什么?
var svgContainer = d3.select("body").append("svg")
.call(zoom) //called earlier
.attr("width", width)
.attr("height", height)
.style("background-color", "black")
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.right + ")");