如何在Backbone JS中处理长按和右键单击事件

时间:2013-05-27 11:28:29

标签: backbone.js

我们可以管理点击和双击事件,如下所示:

events: {
    "click .tree-toggler": "toggletree",
    "dblclick .doubleclick" : "doubleclickFunc"
  },

 toggletree: function(e){
     //code
  },
  doubleclickFunc : function(e){
      //code
  }

但我想管理右键单击事件和长按事件。如何处理它们?

2 个答案:

答案 0 :(得分:12)

我不知道“长按”事件(我甚至不知道有一个,也找不到一些文档),但无论如何。 Backbone使用jQuery的on方法将您的事件绑定到DOM。这意味着适用于on的任何内容都适用于Backbone.View.events(不幸的是,您指定的选择器有一些限制,但除此之外)。

尝试:

events: {
  contextmenu: 'onRightClick'
},
onRightClick: function() {
  alert('it works!');
}

答案 1 :(得分:4)

您可以使用contextmenu事件检测右键点击,如前面的答案中所述。另一种检测鼠标右键点击的方法是jquery的event.which

clickTree: function(e) {
  if (event.which === 3) {
    // handle right clicks
    this.showtreemenu(e);
    return;
  }
  // handle left clicks
  this.toggletree(e);
}

对于长时间点击,即测量点击持续时间,请使用mouseupmousedown

events: {
  'mousedown .measure-click-duration': 'clickStarted',
  'mouseup .measure-click-duration': 'clickEnded'
},

clickStarted: function(e) {
  this.clickStartTime = e.timeStamp;
},

clickEnded: function(e) {
  var clickDuration = e.timeStamp - this.clickStarted;
  if (clickDuration > 1000) {
    this.longClick(e);
  }
}

我为{+ 3}}显示了contextmenu右键点击和上述点击持续时间。