我正在尝试更改元素的颜色,更改它们的类,同时按住鼠标,给出“绘画”效果。通过鼠标点击我有它,这里是代码:
$(() => {
$('table').on("click", "td", (event)=> {
let selected = $(event.target);
selected.toggleClass("obstacle");
});
})
table {
border-collapse: collapse;
}
td {
padding: 20px;
border: 2px solid black;
cursor: pointer;
}
.obstacle {
background-color: red !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
你知道通过按住鼠标改变样式的方法吗?无需根据需要进行尽可能多的点击。
我已经尝试过 OnMouseDown 等事件,但我无法找到方法。
提前致以问候和感谢
我留给你这个解决方案,我使用当你点击时激活的mousedown函数,我使用一个变量(IsClickDown)告诉我它正在点击(它不会释放按钮)默认情况下它会在你做的地方绘制td该事件,我还使用mouseenter 来查看指针进入正方形的动作,以验证它是否被单击。最后,mouseup函数 改变IsClickDown的状态并移除类属性。您添加以绘制 td 元素。另外添加一个验证以防止执行 td 拖动功能。请记住,mousedown 和 mouseup 函数只有在表格元素内完成时才会执行。
mousedown
您可以使用and方法mousemove
在表格单元格中移动,以便在鼠标按下时为它们着色,并在释放鼠标时使用该事件mouseup
对obstacle
所有 td 元素进行解密。我使用一个布尔变量
seleccionado
,它可以让我检测鼠标是否被按下。此外,我还检查元素是否已经具有类,以便在按下鼠标时不会再次分配它。您修改后的示例:
由于您使用的是 jQuery,因此一种解决方案是使用它的事件
mousedown
:您可以在下面看到它的实际效果。除了对您的代码进行更改之外,我还在样式表中添加了一个类,该类在触发该事件时应用于您的元素。
参见:jQuery mousedown() 方法
实际上,您基本上必须监听 的三个事件
Mouse
,第一个是mousedown(),它在按下鼠标按钮时触发,第二个是mouseover以在鼠标经过td
其表格时进行监听,最后一个mouseup是在鼠标位于松开.按钮mouse
。