简体   繁体   English

JS:有没有办法使网格中的单元格不可点击?

[英]JS: Is there a way to make a cell in a grid not clickable?

So I'm basically making a grid where a single click is a circle and a double click is a square. 所以我基本上是在制作一个网格,其中单击是圆形,双击是正方形。 However, if I go back to an already clicked box and make a single or double click, it changes the shape in it. 但是,如果我返回到已经单击的框并单击一次或双击,它将更改其中的形状。 Is there a way to make an already clicked box not clickable anymore? 有没有办法使已经单击的框不再可单击?

Here is my current code 这是我当前的代码

我相信将CSS属性'pointer-events'设置为'none'应该可行。

pointer-events: none;

This should work 这应该工作

https://codesandbox.io/s/vn96m0o6l https://codesandbox.io/s/vn96m0o6l

Problem is that double click is still click. 问题是双击仍然是单击。 So it first triggers click handler than double click. 因此,它首先触发点击处理程序,而不是双击。 That is why i set timeout of 200ms on click handler. 这就是为什么我在点击处理程序上将超时设置为200毫秒。

Double click handler also passes isDoubleClick flag so that handler knows what to do. 双击处理程序还会传递isDoubleClick标志,以便处理程序知道该怎么做。 And in handler based on that and class not existing yet decides which action to do. 在基于该类的处理程序中,尚不存在的类决定要执行的操作。 When click handler gets activated, element already has class and just ignores it. 当点击处理程序被激活时,元素已经具有类并且只是将其忽略。

Could be better, but will fix problem 可能会更好,但会解决问题

Just add A variable after click and use this 单击后只需添加一个变量即可使用

if (isClicked = 1){ 
$(this).unbind("click");
}  

or use vanilla js like this 或像这样使用香草js

document.getElementById("myElement").onclick = function() { return false; } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM