Javascript Cytoscape.js-Get";。打开(水龙头)";事件位置
如何获取Javascript Cytoscape.js-Get";。打开(水龙头)";事件位置,javascript,events,mouseevent,mouse,cytoscape.js,Javascript,Events,Mouseevent,Mouse,Cytoscape.js,如何获取轻触事件位置 在这里,我试图在点击上添加一个节点。。。但是我不知道如何获得传递到新节点的renderposition属性的特定坐标 cy.on('tap', function (e) { if (e.cyTarget === cy) { //var pos = $(this).position().left, //tried this, as jquery //posY = $(this).position
轻触
事件位置
在这里,我试图在点击上添加一个节点。。。但是我不知道如何获得传递到新节点的renderposition
属性的特定坐标
cy.on('tap', function (e) {
if (e.cyTarget === cy) {
//var pos = $(this).position().left, //tried this, as jquery
//posY = $(this).position().top; //positioning without success
var idNum = cy.nodes().size();
var setID = idNum.toString();
cy.add([{
group: "nodes",
data: {
id: "n" + setID
},
renderedPosition: {
x: e.pageX, //- posX,
y: e.pageY //- posY
},
}]);
}
});
使用相同的代码,但与$('#cy')绑定。单击
函数,它可以工作。。。但是使用cy.on('tap')
方式,事件e
没有pageX
和pageY
属性,我也不能使用$(this.position())函数获取元素位置
我真的更喜欢使用tap
,因为我正在尝试为移动接口开发我的应用程序
提前谢谢
编辑:使用@darshanags观察,我这样解决:
var idNum = cy.nodes().size(),
setID = idNum.toString(),
offset = $("cy").offset(),
position = {
x: e.originalEvent.x - offset.left,
y: e.originalEvent.y - offset.top
};
cy.add([{
group: "nodes",
data: { id: "n" + setID },
renderedPosition: {
x: position.x,
y: position.y
},
...
}]);
您对的使用不正确,Cytoscape的.position()
与jQuery的position()
的工作方式有点不同:
获取位置并使用它:
var idNum = cy.nodes().size(),
setID = idNum.toString(),
position = {
x: e.cyTarget.position("x"),
y: e.cyTarget.position("y")
};
cy.add([{
group : "nodes",
data : {
id : "n" + setID
},
renderedPosition : {
x : position.x,
y : position.y
}
}]);
文档:我回答了这个问题,但在尝试实现这一点时遇到了这两个问题,所以我也将在这里发布
在cytoscape.js 3.2中,有以下方便功能:
cy.on("tap", function(e) {
cy.add([{
group: "nodes",
id: "testid",
renderedPosition: {
x: e.renderedPosition.x,
y: e.renderedPosition.y,
},
});
});
这最终相当于(假设您设置了容器:$(“#cy container”)
):
非常感谢。我真的很感谢你的帮助,但不幸的是它没有起作用:e.cyTarget.position
是未定义的。它真的应该存在吗?如果是这样的话,我真的不知道还有什么地方我错了。不管怎样,我通过你的观察解决了这个问题。请参见编辑。非常感谢。注意:在2.1中,您将能够使用e.cyPosition
和e.cyprenderedposition
cy.on("tap", function(e) {
let canvas = $("#cy-container").find("canvas").get(0);
cy.add([{
group: "nodes",
id: "testid",
renderedPosition: {
x: e.originalEvent.pageX - $(canvas).offset().left,
y: e.originalEvent.pageY - $(canvas).offset().top,
},
});
});