Javascript 触发SVG元素上的单击事件
我有一组svg节点,它们连接了一个Javascript 触发SVG元素上的单击事件,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我有一组svg节点,它们连接了一个点击事件监听器。我还分配了一个nodeId,以唯一地标识我的不同节点 var nodeId = 0; nodeGroup.append("svg:circle") .attr("r", 7) .style("fill", "blue") .style("stroke", "orange") .attr("data-node-id", function(d,i) { return nodeId += 1;
点击事件监听器。我还分配了一个nodeId
,以唯一地标识我的不同节点
var nodeId = 0;
nodeGroup.append("svg:circle")
.attr("r", 7)
.style("fill", "blue")
.style("stroke", "orange")
.attr("data-node-id", function(d,i) {
return nodeId += 1;
})
.on('click', nodeInfo);
单击时,节点触发一个函数以显示节点对象
var nodeInfo = function displayNodeInfo(node){
console.log(node);
}
我试图做的是,单击与svg组分离的按钮,调用这个displayNodeInfo()
函数。函数应根据单击的内容显示上一个或下一个节点。我想,nodeId
会在这里派上用场
<button id="next-node" />
<button id="previous-node" />
$("#next-node").on("click", function(e){
displayNodeInfo() //Not sure how to pass the next node here
)};
$(“#下一个节点”)。在(“单击”上,函数(e){
displayNodeInfo()//不确定如何在此处传递下一个节点
)};
我对D3还相当陌生,仍然在研究它的原生方法,所以我只是想知道是否有人有过类似的任务。多谢 我建议您使用节点索引为每个节点创建唯一的id,并使用相同的id进行节点标识。应跟踪当前选定节点的索引
var activeNodeIndex = 0;
nodeGroup.append("svg:circle")
.attr("r", 7)
.style("fill", "blue")
.style("stroke", "orange")
.attr("id", function(d,i) {
return "node"+i; //i has value from 0 to (No. of nodes - 1)
})
.on('click', function(node,i){
activeNodeIndex = i; //Track present selected node.
displayNodeInfo(node);
});
function displayNodeInfo(node){
console.log(node);
}
$("#next-node").on("click", function(e){
var nextNode = d3.select("#node"+(activeNodeIndex +1)); //find next node using index
displayNodeInfo(nextNode);
)};
$("#prev-node").on("click", function(e){
var prevNode = d3.select("#node"+(activeNodeIndex-1)); //find previous node using index
displayNodeInfo(prevNode);
)};
注意:根据当前节点选择(第一个或最后一个)启用/禁用下一个/上一个按钮。以及什么是nodeGroup
?@Anthony只是一组svg:g
elements@KuraiBankususvg:circles是数据驱动的吗?是的,它们是@seemantkulletenth这就是我想要的,很好地利用了索引。非常感谢你!