javascript - jQuery - 在鼠标单击或按住时为单元格着色
问题描述
我正在制定一项任务,通过制作 100 x 50 的单元格和 onlcick 来重新创建绘画类型,并为它们提供选定的背景颜色。但是为了使绘图更容易,用户应该能够按住鼠标按钮并拖动单元格以使它们填充背景颜色。只要他松开鼠标按钮,绘图就会停止,您将返回单击或必须再次按住鼠标按钮。
我试图用 .mousemove 来做到这一点,但没有成功。
// MAKING THE GRID
for (let i = 1; i <= 49; i++){
$('#canvas').append('<tr id="table' + i + '"</tr>');
for(let j = 1; j <= 100; j++){
$('#table' + i).append('<td></td>');
}
}
// ADDING A COLOR ON CLICK
$('td').click(function kleur(){
if($(this).attr('style')){
$(this).removeAttr('style')
} else {
$(this).attr('style', 'background-color:' + color);
}
})
// SELECTING COLOR ON RIGHT CLICK
$('td').mousedown(function(e) {
switch (event.which) {
case 3:
$('.popup').show();
$('.popup').css({left: e.pageX});
$('.popup').css({top: e.pageY});
}
});
解决方案
尝试监听 mouseover 事件并检查按钮是否被按下。它看起来像:
$("#canvas").on("mouseover", function(e) {
if(e.buttons == 1)
Draw(e.target);
});
我为你做了一个简单的例子(不幸的是,在香草 JS 中,我不再使用 jQuery): https ://codepen.io/DooMxDD/pen/RmWqjM
推荐阅读
- php - 显示附加结果的 Sql 查询
- angular - Angular 7 httpClient.post 订阅数据在 Angular 模板中不可访问
- java - Hibernate 尝试将数据插入到不存在的表中
- sas - 比较变量格式定义变化
- ssh - SCP:从一个盒子路由到另一个盒子,通过盒子对两者都有权限。
- python - 我应该如何构建我的 tensorflow 数据集以将其输入自定义 RNN 估计器
- perl - 使用 SAFEGUARD 为 HP Nonstop Guardian 编写 SSH 脚本
- php - 如何在 laravel 中使用 with 方法将令牌传递给视图
- python - 仅在基类中运行 __init__
- c# - C# 控制台在输入后关闭但保持代码运行