永久合并 "click" 和 "hover"?
Combing "click" and "hover" permanently?
我想要 Raphael.js 提供的点击和拖动功能,示例如下:https://qiao.github.io/PathFinding.js/visual/.
添加和移除障碍物的方式很棒,它本质上是结合了 mousedown 事件和悬停。但这到底是怎么做到的呢?有什么帮助吗?
我最接近的是:https://codepen.io/ProgrammingKea/pen/ZowWJx
突出的一点是
div.addEventListener("mousedown", function(ev){
this.classList.add("obstacle");
});
div.addEventListener("mousemove", function(ev){
this.classList.add("obstacle");
});
div.addEventListener("mouseup", function(ev){
this.classList.add("obstacle");
});
如果你按大,然后将鼠标悬停在网格上,这是我得到的最接近的。
但我的问题是它只能悬停在这里,我没有上面 link
的点击功能
请 post 仅包含 vanilla JS 的答案
您可以使用类似的东西:
["mousedown", "mousemove", "mouseup"]
.forEach(function (eve) {
div.addEventListener(eve, function(ev){
this.classList.add("obstacle");
});
});
在每个元素上放置一个处理程序可能感觉有点笨拙。我很想在主容器上放置一个处理程序,然后从那里检查...
也许首先添加一些代码来检查鼠标是否按下。
var main = document.getElementById('main')
var mouseDown = 0;
main.onmousedown = function() {
mouseDown=1;
}
main.onmouseup = function() {
mouseDown=0;
}
然后我们可以检查鼠标是否按下或悬停事件...
main.addEventListener('mouseover', mousecheck)
main.addEventListener('mousedown', mousecheck)
然后我们preventDefault(停止拖动)。
如果鼠标处于按下状态,并且正在操作的元素是一个框,那么我们将更改它的颜色。
function mousecheck( ev ) {
ev.preventDefault();
if( mouseDown && ev.target.className.startsWith( 'box') ) {
ev.target.style.backgroundColor = ev.target.style.backgroundColor == "red" ? 'white' : 'red';
}
}
我想要 Raphael.js 提供的点击和拖动功能,示例如下:https://qiao.github.io/PathFinding.js/visual/.
添加和移除障碍物的方式很棒,它本质上是结合了 mousedown 事件和悬停。但这到底是怎么做到的呢?有什么帮助吗?
我最接近的是:https://codepen.io/ProgrammingKea/pen/ZowWJx
突出的一点是
div.addEventListener("mousedown", function(ev){
this.classList.add("obstacle");
});
div.addEventListener("mousemove", function(ev){
this.classList.add("obstacle");
});
div.addEventListener("mouseup", function(ev){
this.classList.add("obstacle");
});
如果你按大,然后将鼠标悬停在网格上,这是我得到的最接近的。
但我的问题是它只能悬停在这里,我没有上面 link
的点击功能请 post 仅包含 vanilla JS 的答案
您可以使用类似的东西:
["mousedown", "mousemove", "mouseup"]
.forEach(function (eve) {
div.addEventListener(eve, function(ev){
this.classList.add("obstacle");
});
});
在每个元素上放置一个处理程序可能感觉有点笨拙。我很想在主容器上放置一个处理程序,然后从那里检查...
也许首先添加一些代码来检查鼠标是否按下。
var main = document.getElementById('main')
var mouseDown = 0;
main.onmousedown = function() {
mouseDown=1;
}
main.onmouseup = function() {
mouseDown=0;
}
然后我们可以检查鼠标是否按下或悬停事件...
main.addEventListener('mouseover', mousecheck)
main.addEventListener('mousedown', mousecheck)
然后我们preventDefault(停止拖动)。
如果鼠标处于按下状态,并且正在操作的元素是一个框,那么我们将更改它的颜色。
function mousecheck( ev ) {
ev.preventDefault();
if( mouseDown && ev.target.className.startsWith( 'box') ) {
ev.target.style.backgroundColor = ev.target.style.backgroundColor == "red" ? 'white' : 'red';
}
}