【问题标题】:How can I respond to a right-click in an HTML table "cell" (td) in a Meteor project?如何响应 Meteor 项目中 HTML 表格“单元格”(td) 中的右键单击?
【发布时间】:2015-08-25 00:55:40
【问题描述】:

假设如下:

我有一个加载模板的 HTML 页面。 模板名称为scheduleTable。 该模板描述了一个 HTMLTable,(当然)有各种 trs 和 tds,还有一个特定的 td,它使用名为 "tddetails1" 的 CSS 类

如果我想用 JavaScript 响应右键单击该 "tddetails1" 元素,我想我需要在 js 文件中编写类似这样的代码:

Template.scheduleTable.events({
    "right-click .tddetails1": function (event) {
    // do something 
  });

但是我可以使用什么事件?没有“右键单击”事件,我不想捕获“常规”(左)单击。难道我注定要在每个td中使用一个html按钮,并响应他们的点击事件?

更新

是的,Christian 的回答是“准确”;这行得通:

HTML

<template name="tblExpenseDescription">
<table width="75%" border="1">
    <tr>
        <td width="200px"><strong>Description of Expense</strong></td>
        <td class="rc1" >Date 1: <input type="date" id="date1" name="date1"/>            
        </td>
        . . .

JavaScript

if (Meteor.isClient) {

  Template.tblExpenseDescription.events({
    "mousedown .rc1": function (event) {
           if (event.button == 2) {
               console.log('date1 was right-clicked');
           }
      }
  });
}

【问题讨论】:

    标签: meteor


    【解决方案1】:

    只需使用mousedown 事件处理程序并检查event.button == 2

    Template.scheduleTable.events({
        "mousedown .tddetails1": function (event) {
             if (event.button == 2) {
                 // this code will run on right-click
                 // do something
             }
        }
    });
    

    编辑:

    为了防止上下文菜单弹出添加:

    "contextmenu .tddetails1": function (event) {
        return false;
    }
    

    到您的事件处理程序对象中。

    【讨论】:

    • 需要注意的是,使用return false而不是event.preventDefault()的意义在于return false本质上是在做三件事:event.preventDefault(); event.stopPropagation(); return false,而使用event.preventDefault()并返回不会停止事件开始冒泡。
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 2011-12-07
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    相关资源
    最近更新 更多