6

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

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

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

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

4

2 回答 2

12

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

尝试:

events: {
  contextmenu: 'onRightClick'
},
onRightClick: function() {
  alert('it works!');
}
于 2013-05-27T11:51:58.700 回答
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);
  }
}

我为右键单击和上述单击持续时间做了一个小提琴演示。contextmenu

于 2013-05-27T12:14:27.943 回答