我们可以管理单击和双击事件,如下所示:
events: {
"click .tree-toggler": "toggletree",
"dblclick .doubleclick" : "doubleclickFunc"
},
toggletree: function(e){
//code
},
doubleclickFunc : function(e){
//code
}
但我想管理右键单击事件和长按事件。如何处理它们?
我们可以管理单击和双击事件,如下所示:
events: {
"click .tree-toggler": "toggletree",
"dblclick .doubleclick" : "doubleclickFunc"
},
toggletree: function(e){
//code
},
doubleclickFunc : function(e){
//code
}
但我想管理右键单击事件和长按事件。如何处理它们?
我不知道“长按”事件(我什至不知道有一个,也找不到关于它的文档),但无论如何。Backbone 使用 jQuery 的on
方法将您的事件绑定到 DOM。这意味着任何可以使用的东西都on
可以使用Backbone.View.events
(不幸的是,您指定的选择器有一些限制,但除此之外)。
尝试:
events: {
contextmenu: 'onRightClick'
},
onRightClick: function() {
alert('it works!');
}
您可以使用该contextmenu
事件来检测右键单击,如前面的答案中所述。另一种检测鼠标右键单击的方法是 jquery 的event.which:
clickTree: function(e) {
if (event.which === 3) {
// handle right clicks
this.showtreemenu(e);
return;
}
// handle left clicks
this.toggletree(e);
}
对于长点击,也就是测量点击持续时间,使用mouseup
和mousedown
:
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