Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用SVG拖动_Javascript_Svg_D3.js - Fatal编程技术网

Javascript 禁用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();

我想禁用此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(); 
        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 + ")");