Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 使用d3.behavior.drag()时,拖动时的重影图像消失_Javascript_D3.js_Drag And Drop - Fatal编程技术网

Javascript 使用d3.behavior.drag()时,拖动时的重影图像消失

Javascript 使用d3.behavior.drag()时,拖动时的重影图像消失,javascript,d3.js,drag-and-drop,Javascript,D3.js,Drag And Drop,我需要拖动表格单元格,并在拖动时在鼠标指针下显示其重影。该表完全由d3.js生成。当我在适当的单元格上将draggable属性设置为true时,重影图像将按预期显示 rows .append("td") .text(function (d) {return d.name;}) .attr('draggable', 'true'); 但由于我需要拖动来影响页面上的其他元素(设置不同的样式、过滤器选择等),因此我调用d3.behavior.drag()并实现d

我需要拖动表格单元格,并在拖动时在鼠标指针下显示其重影。该表完全由d3.js生成。当我在适当的单元格上将draggable属性设置为true时,重影图像将按预期显示

 rows
    .append("td")
    .text(function (d) {return d.name;})      
    .attr('draggable', 'true');
但由于我需要拖动来影响页面上的其他元素(设置不同的样式、过滤器选择等),因此我调用d3.behavior.drag()并实现dragstart、drag和dragend函数

.call(d3.behavior.drag()
   .on('dragstart', function () {
      d3.select(this)
         .classed('dragged', true)
         .style('font-style', 'italic')
         .style('color', 'grey');
   })
   .on('drag', function () {
      d3.select('#drop-target')
         .style('background-color', 'green');
   })
   .on('dragend', function () {
      d3.select(this)
         .classed('dragged', false)
         .style('font-style', 'normal')
         .style('color', 'black');
      d3.select('#drop-target')
         .style('background-color', 'yellow');
   })
);
问题是d3.behavior.drag()似乎覆盖了重影图像的创建,现在没有任何元素被拖动的可视队列。我做错了什么


这里有一个提琴:

而不是将侦听器注册到
拖动行为中
将其添加到选择中

rows.append('td').html(function (d) {
     return d.type;
 })
     .style('font-style', 'italic');
 rows.append('td').text(function (d) {
     return d.name;
 })
     .attr('draggable', 'true')

     .on('dragstart', function () {
     d3.select(this)
         .classed('dragged', true)
         .style('font-style', 'italic')
         .style('color', 'grey');
 })
     .on('drag', function () {
     d3.select('#drop-target')
         .style('background-color', 'green');

 })
     .on('dragend', function () {
     d3.select(this)
         .classed('dragged', false)
         .style('font-style', 'normal')
         .style('color', 'black');
     d3.select('#drop-target')
         .style('background-color', 'yellow');

 });
工作代码


希望这有帮助

这使用的是D3的V3,似乎V5不再适用了?在V4
d3中,行为.drag
已明显移动到
d3.drag