2013-05-27 8 views
6

हम नीचे की तरह क्लिक करें और डबल क्लिक करें घटनाओं का प्रबंधन कर सकते हैं:कैसे बैकबोन में लंबे क्लिक करें और राइट क्लिक ईवेंट प्रबंधित करने के जे एस

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

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

लेकिन मैं सही क्लिक करें घटना और लांग क्लिक करें घटना प्रबंधित करना चाहते हैं। उन्हें कैसे संभालें?

+0

मुझे लगता है कि कोई "लांगक्लिक" घटना परिभाषित नहीं है, इसलिए आपको एक कस्टम इवेंट हैंडलर लिखना होगा जिसे संयोजन में मूसडाउन और माउसअप ईवेंट का उपयोग करके बनाया जा सकता है। राइट क्लिक के लिए [इस] (http://stackoverflow.com/questions/4235426/how-can-i-capture-the-right-click-event-in-javascript) पर एक नज़र डालें, – Phoenix

+0

@Phoenix - हाँ मैंने डॉक्टर और इतनी सारी साइटों की खोज की है लेकिन लंबी अवधि की घटना नहीं मिल सका। कस्टम इवेंट हैंडलर लिखना है। – Cindrella

+0

['$ .on() 'संदर्भ पृष्ठ] (http://api.jquery.com/on/) में 6 वें उदाहरण पर नज़र डालें – Phoenix

उत्तर

12

मुझे "लंबे क्लिक" ईवेंट के बारे में पता नहीं है (मुझे यह भी पता नहीं था कि वहां एक था और उसे कुछ दस्तावेज़ नहीं मिला), लेकिन वैसे भी। बैकबोन आपके ईवेंट को DOM पर बाध्य करने के लिए jQuery की on विधि का उपयोग करता है। इसका मतलब है कि on के साथ काम करने वाली कोई भी चीज़ Backbone.View.events के साथ काम करेगी (दुर्भाग्यवश आपके द्वारा निर्दिष्ट चयनकर्ता के लिए कुछ सीमाएं हैं, लेकिन इसके अलावा)।

प्रयास करें:

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

संदर्भ मेनू को रोकने के लिए event.preventDefault() को कॉल करना सुनिश्चित करें पॉप अप से! – jakee

+0

@jakee उस पर निर्भर करता है कि वह क्या करना चाहता है, इसलिए मैं इसके बारे में कुछ भी नहीं कहूंगा और विचार करता हूं कि ओपी जानता है कि वह वैसे भी कर रहा है :) – Loamhoof

+0

राइट क्लिक इवेंट पूरी तरह से काम कर रहा है। राइट क्लिक इवेंट के लिए +1। Longclick सारांश के लिए – Cindrella

4

आप पहले जवाब में वर्णित के रूप सही क्लिक का पता करने के लिए contextmenu घटना का उपयोग कर सकते हैं।

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

मैं एक fiddle अधिकार के लिए प्रदर्शन contextmenu बनाया सही माउस बटन के लिए क्लिक का पता लगाने के लिए एक और तरीका है jQuery के event.which है क्लिक और ऊपर वर्णित क्लिक अवधि।

+0

+1। यह पूरी तरह से काम कर रहा है। – Cindrella

संबंधित मुद्दे