【问题标题】:Get the id of SVG element that was being dragged获取被拖动的 SVG 元素的 id
【发布时间】:2019-01-05 17:19:39
【问题描述】:

我正在使用 svg.jsdragg.js 来移动一系列动态创建的对象(矩形和圆形等)。 他们都在一个名为nodes 的组中,我可以获得被拖动项目的位置,但我在尝试检索时迷失了

gid="dyanmicidIcreated"

我需要这个来识别哪个 SVG 对象被移动了?

nodes.mouseup(node => {
  console.log("x: "+node.clientX)
  console.log("y: "+node.clientY)
})

【问题讨论】:

    标签: javascript svg.js


    【解决方案1】:

    您将处理程序传递给使用触发的事件调用的函数。 因此,有关事件的所有信息都在事件对象中(出于某种原因,您将其称为 node)。

    nodes.mouseup((event) => {
        // mouse coordinates
        console.log(event.clientX, event.clientY)
    
        // the node which was clicked
        console.log(event.target)
    
        // the svgjs object
        console.log(SVG.adopt(event.target))
    
        // the id
        console.log(SVG.adopt(event.target).id())
    })
    

    如果不使用箭头函数,函数会在 svgjs 对象的范围内调用。所以你可以使用this:

    nodes.mouseup(function (event) {
        // `this` is same as node
        console.log(this)
    
        // id
        console.log(this.id())
    })
    

    在 svg.js v3.0 中,您将使用 SVG(event.target) 而不是 SVG.adopt。其他一切都保持不变

    【讨论】:

    • 非常感谢 - 这得到了节点的 tspan id 我需要它所属的组的 id 查看图像 - 我得到 SvgjsTspan1056 比以前好 10 倍,但我需要 yqgn8zzzyvashpr66jny5 ... dropbox.com/s/m12c9anbk5t3c9q/…
    • 那么是什么阻止你打电话给graoupVar.id()?还是parent()
    • parent() 我没能得到正确的东西。这是完整的代码(可能有帮助)请原谅混乱 - gitlab.adamprocter.co.uk/adamprocter/nodenoggin/blob/…
    • 老兄,nodes.id()。我不确定这有什么难的。
    • 这只是为每次拖动输出相同的 ID,而不是您拖动的那个,不幸的是,这不是我需要的组 ID。例如,我拖动的每个输出 console.log(nodes.id()) 作为 SvgjsG1015 :(
    【解决方案2】:

    console.log(SVG.adopt(event.target.parentNode).id())

    【讨论】:

      猜你喜欢
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 2010-09-16
      • 1970-01-01
      • 2016-04-08
      相关资源
      最近更新 更多