2013-05-27 19 views
6

onu aşağıdaki gibi tıklama ve çift tıklama olayları yönetebilirsiniz:nasıl omurga içerisine uzun tıklama ve sağ tıklama olayları işlemek için JS

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

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

Ama sağ tıklama olayını ve Uzun tıklama olayı yönetmek istiyoruz. Onları nasıl ele alırım?

+0

Tanımlanan "longclick" olayı yok sanırım, bu nedenle birleştirilmiş olay ve mouseup olayları kullanılarak oluşturulabilen bir özel olay işleyicisi yazmak zorunda kalacaksınız. Doğru tıklama gelince [this] 'a bakın (http://stackoverflow.com/questions/4235426/how-can-i-capture-the-right-click-event-in-javascript) – Phoenix

+0

@Phoenix - Evet, dokümanı ve birçok siteyi aradım ancak longclick etkinliğini bulamadım. Özel etkinlik işleyicisi yazmalı. – Cindrella

+0

['$ .on() 'başvuru sayfası]' nda 6. örneğe bakın (http://api.jquery.com/on/) – Phoenix

cevap

12

"Uzun tıklama" olayını bilmiyorum (bir tane olduğunu bile bilmiyordum ve üzerinde bir doküman bulamadım), ama yine de. Backbone, etkinliklerinizi DOM'a bağlamak için jQuery'nin on yöntemini kullanır. Bu, on ile çalışan her şeyin Backbone.View.events ile çalışacağı anlamına gelir (ne yazık ki belirttiğiniz seçicinin bazı sınırları vardır, ancak bunun dışında).

Dene:

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

İçerik menüsünü durdurmak için event.preventDefault() öğesini çağırdığınızdan emin olun. haşhaş! – jakee

+0

@jakee ne yapmak istediğine bağlı, bu yüzden bu konuda bir şey söylememeyi ve OP'nin ne yaptığını bildiğini düşünmeyi tercih ederim :) – Loamhoof

+0

Sağ tıklama olayı mükemmel çalışıyor. Sağ tıklama olayı için +1. Longclick özeti için – Cindrella

4

Daha önce cevap anlatıldığı gibi doğru tıklamaları algılamakta contextmenu olayını kullanabilirsiniz.

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); 
    } 
} 

Ben fiddle hakkı için contextmenu gösteren yaptı: aka tıklama süresini ölçerek uzun tıklama için

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

, mouseup ve mousedown kullanın: sağ fare düğmesi için tıklama algılamak için başka bir yol jquery en event.which olduğunu tıklamalar ve yukarıda açıklanan tıklama süresi.

+0

+1. Mükemmel çalışıyor. – Cindrella

İlgili konular