如何通过右键单击来检测事件

时间:2019-12-18 10:24:28

标签: javascript jquery html css

我想通过右键单击注销某些事件。

例如,当我注册一个单击某些单元格的事件时,其颜色将改变。如下所示:

$(function() {  
$("#our_calendar td").click(function(){
    $(this).css('background', 'yellow');

  });
});

我想通过右键单击注销。 我找到了一些答案:

Is right click a Javascript event?

我想知道是否可以通过右键单击取消注册(初始化颜色),并且是否可以不通过右键单击显示窗口。

如果有人遇到过此类问题,请告诉我。

谢谢

3 个答案:

答案 0 :(得分:3)

假设取消注册,是指通过单击删除初始设置的颜色,可以。您还可以通过在事件处理程序中传递参数e或事件参数并使用e.preventDefault()来阻止显示下拉菜单(contextmenu);

尝试下面的演示,单击以设置颜色,然后右键单击以取消设置;

$("#our_calendar td").on("contextmenu", function(e) {
  e.preventDefault();
  $(this).css('background', 'unset');
}).on("click",function(){
  $(this).css('background', 'yellow');
});
td {
  padding: 15px;
  cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table id="our_calendar">
  <tr>
    <td>1</td>
    <td>1</td>
    <td>1</td>
    <td>1</td>
    <td>1</td>
  </tr>
  <tr>
    <td>1</td>
    <td>1</td>
    <td>1</td>
    <td>1</td>
    <td>1</td>
  </tr>
  <tr>
    <td>1</td>
    <td>1</td>
    <td>1</td>
    <td>1</td>
    <td>1</td>
  </tr>
</table>

答案 1 :(得分:2)

您要搜索contextmenu事件和off()

$("a")
  .on('click', function() {
    $(this).css('background', 'yellow');
  })
  .on('contextmenu', function(e) {
    e.preventDefault();
    $(this).off('click').css('background', 'unset');
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<a href="javascript:;">Button</a>

答案 2 :(得分:0)

您可以使用:

$('#our_calendar td').mousedown(function(event) 
{

    switch (event.which) {
        case 1:
            alert('Left mouse button is pressed');
            break;
        case 2:
            alert('Middle mouse button is pressed');
            break;
        case 3:
            alert('Right mouse button is pressed');
            break;
        default:
            alert('Nothing');
    }
});