首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素在向d3拖动行为中添加参数后不再可拖动。

问元素在向d3拖动行为中添加参数后不再可拖动。
EN

Stack Overflow用户
提问于 2016-01-20 06:16:51
回答 1查看 289关注 0票数 2

以下代码创建一个圆并使其可拖动:

HTML:

代码语言:javascript
复制
<svg width='400' height='400'>
  <rect width='100%' height='100%'></rect>
  <circle transform='translate(259.5,197)' r='10'></circle>
</svg>

JS:

代码语言:javascript
复制
 var drag = d3.behavior.drag().on('drag', dragMove)
 d3.select('svg').append('circle').attr('transform', 'translate(' + '100px' + ',' + '100px' + ')').attr('r', '5').call(drag)

 function dragMove(test) {
   var x = d3.event.x
   var y = d3.event.y
   console.log(test)
   d3.select(this).attr('transform', 'translate(' + '200px' + ',' + '200px' + ')')
 }

它起作用了。但是,当我向dragMove添加一个参数时:

代码语言:javascript
复制
'drag', function() { dragMove('test') }

拖动功能停止工作(不过,console.log(test)输出'test' )

为什么会发生这种情况,以及如何解决?

https://jsfiddle.net/alexcheninfo/d8doyc9r/4/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-20 06:33:47

应该是这样的:

代码语言:javascript
复制
 var drag = d3.behavior.drag().on('drag', function(d) {

   dragMove(this);//pass the this
 })


 function dragMove(me) {


   var x = d3.event.x
   var y = d3.event.y
   //operate on me
   d3.select(me).attr('transform', 'translate(' + x + ',' + y + ')')
 }

工作代码这里

希望这能有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34892819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档