javascript - 如何在Java中使用shift +单击?

原文 标签 javascript d3.js

我有一个使用D3的力导向图,并且可以使用单击按钮进行平移。
我想做的是按住Shift键并单击以执行此操作。

现在我有这段代码:

这是在单击鼠标时查看是否单击了Shift按钮:

.on("click", function() {
    if (d3.event.shiftKey) {
        console.log("Mouse+Shift pressed");
        svg.append('svg:rect')
    .call(zoom);
    }
})


缩放功能:

var minZoom = 0.2,
    maxZoom = 2;
    var zoom = d3.behavior.zoom()
    .on("zoom", redraw)
    .scaleExtent([minZoom, maxZoom])//-call zoom but put scale extent on to limit zoom in/out
    ;


重绘功能,可进行平移和缩放:

function redraw() {
    inner.attr("transform","translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")"); 
    }


现在,这种作品。我已经放置了一个控制台日志来调试它,然后发生的是,当我按下shift键并单击鼠标时,“ console.log字符串”只有在放开鼠标按钮时才会打印出来。

但是我希望它在鼠标按钮按下时能够工作。我尝试过mousedown,mouseover和click,还有其他方法吗?

我究竟做错了什么 ?

最佳答案

您应该使用jQuery的.keydown()事件。它应该可以解决您的问题。

这是文档的链接:
http://api.jquery.com/keydown/

希望对您有所帮助!

相关文章:

javascript - 将数组的大小/长度减小到一定的大小/长度

javascript - 为什么我的事件没有同时为两个订阅者触发?

javascript - 用于组织大型javascript应用程序的工具和最佳做法

javascript - d3.csv:使用特定的行数据在for循环参数中使用

javascript - 如何将此语法转换为CoffeeScript(js2coffee不起作用)?

javascript - ng-show在角度项目中不起作用

javascript - D3.js流图json数据格式

javascript - 如何使用d3画布渲染器添加鼠标事件以强制执行有向图?

javascript - 如何将数组从服务功能传递到控制器(AngularJs)中的作用域?

javascript - 在新窗口上使用d3.js