2011-06-06 20 views
13

राइट-क्लिक करें ContextMenu plugin का उपयोग करके, मैं तत्वों के संदर्भ मेनू को देर से बांधने की कोशिश कर रहा हूं। तो पर पहले राइट क्लिक करें उन तत्वों पर, मैं चाहते हैं:ट्रिगर

  1. अवरोधन एक निश्चित "uncontextmenued" वर्ग पर एक लाइव इवेंट के माध्यम से राइट क्लिक करें,
  2. यह निर्धारित करते हैं data('events').contextmenu मौजूद है,
  3. यदि नहीं, तो संदर्भ-मेनू संलग्न करें (और इस लाइव प्रक्रिया को फिर से फेंकने से बचने के लिए कक्षा को बदलें),
  4. राइट-क्लिक दिखाने के लिए राइट-क्लिक ईवेंट को दोबारा फेंक दें।

मुझे अंतिम आइटम में परेशानी हो रही है। jQuery .click() या .trigger('click') पर, जो बाएं-क्लिक अनुकरण करता है, लेकिन trigger के माध्यम से राइट-क्लिक ईवेंट को आग लगाने का कोई तरीका नहीं लगता है।

या वहां है?

उत्तर

26

आप द्वारा

$('#element').trigger({ 
    type: 'mousedown', 
    which: 3 
}); 

http://api.jquery.com/trigger/#example-5

+2

ठीक है जो मुझे सही रास्ते पर रखता है। बस जवाब को पूरा करने के लिए, उद्धृत प्लगइन को वास्तव में एक माउसअप के बाद एक मूसडाउन की आवश्यकता होती है ... तो निकलास की तरह ट्रिगर करना एक ट्रिगर ('माउसअप') के बाद किया जाना चाहिए। चूंकि यह 'बटन' प्रॉपर्टी है, और प्लगइन द्वारा पढ़ी जाने वाली 'कौन सी' संपत्ति नहीं है, मेरी समस्या का वास्तविक उत्तर $ ('# element') था। ट्रिगर ('mousedown', {button: 2})। ट्रिगर ('माउसअप')। धन्यवाद निकलास। – glmxndr

+0

हाय सबटेनैंट, दस लाख धन्यवाद, मैं एक ही कार्यक्षमता के बाद था और आपके जवाब ने मुझे बहुत मदद की, लेकिन मुझे लगता है कि आपको वहां कोई त्रुटि है, मुझे इसे बदलना पड़ा: $ ('# element')। ट्रिगर । ({प्रकार: 'mousedown', बटन: 2}) को गति प्रदान ({प्रकार: 'mouseup'}); इसे काम करने के लिए। –

+0

मेरे मामले में, "mousedown" के बजाय "माउसअप"। – gumkins

-2

इसी तरह, लेकिन मुझे यकीन नहीं है कि आप jQuery UI डेटा का जिक्र कर रहे हैं, लेकिन।

$('#element').mousedown(function(event) 
{ 
    if(event.which == 3) 
    { 
     if(typeof($(this).data('events')) === 'undefined') 
     { 
      $(this).data('events', { somedata: 'hello' }); 
     } 
     else 
     { 
      // "re-throw" right click context menu 
     } 
    } 
}); 
+0

क्षमा करें, लेकिन मैं एक राइट-क्लिक ईवेंट ट्रिगर करना चाहता हूं, इसमें कोई ईवेंट संलग्न नहीं करना चाहता हूं। – glmxndr

4

यह करने के लिए एक नए तरीका नहीं है यह गति प्रदान कर सकते हैं:

$('#element').triggerHandler('contextmenu'); 

Documentation can be found here

+3

मेरे लिए 'संदर्भमेनू' काम नहीं किया। इसके बजाय, 'contextmenu' ठीक से काम किया। – lort

+0

धन्यवाद, यह एक टाइपो है। –

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