2011-01-11 15 views

उत्तर

7

इस तरह चेकआउट:

// bubbling is internal 
trigger: function(event, data, elem /*, bubbling */) { 
// Event object or event type 
var type = event.type || event, 
    bubbling = arguments[3]; 

// Handle a global trigger 
if (!elem) { 
    // Don't bubble custom events when global (to avoid too much overhead) 
    event.stopPropagation(); 

    // Only trigger if we've ever bound an event for it 
    if (jQuery.event.global[ type ]) { 
     jQuery.each(jQuery.cache, function() { 
      if (this.events && this.events[type]) { 
       jQuery.event.trigger(event, data, this.handle.elem); 
      } 
     }); 
    } 
} 

// ... snip ... 
// Trigger the event, it is assumed that "handle" is a function 
var handle = elem.nodeType ? 
    jQuery.data(elem, "handle") : 
    (jQuery.data(elem, "__events__") || {}).handle; 

if (handle) { 
    handle.apply(elem, data); 
} 

var parent = elem.parentNode || elem.ownerDocument; 
// ... snip .... 
if (!event.isPropagationStopped() && parent) { 
    jQuery.event.trigger(event, data, parent, true); 

    } else if (!event.isDefaultPrevented()) { 
    // ... snip ... 
       jQuery.event.triggered = true; 
       target[ targetType ](); 
    } 
} 

क्या यहाँ जा रहा है है इस प्रकार है :

जब trigger को jQuery चेक कहा जाता है यह देखने के लिए कि क्या वैश्विक स्तर पर ईवेंट ट्रिगर किया जा रहा है ($.trigger("event_name");)।

अगर ऐसा है नहीं विश्व स्तर पर शुरू हो रहा जा रहा है, और प्रचार और नहीं बंद कर दिया गया प्रश्न में तत्व एक माता पिता के तत्व (!event.isPropagationStopped() && parent) तो jQuery पेरेंट तत्व पर ट्रिगर घटना मैन्युअल कॉल किया है।

jQuery.event.trigger(event, data, parent, true); 

वहाँ बहुत-सी चल रहा है - jQuery स्रोत कोड में event.js देखते हैं।

1

चेक आउट की तरह tutorials

$(document).bind("eventType", ...); 
// This is equivalent to the plugin's $.subscribe("eventType", ...); 
$(document).trigger("eventType"); 
// equivalent to plugin's $.publish("eventType"); 

इसके अलावा इस SO question

+5

मुझे लगता है कि वह एक एपीआई स्पष्टीकरण नहीं चाहते थे लेकिन वास्तव में वे कैसे काम करते हैं पर एक तकनीकी स्पष्टीकरण। – ThiefMaster

+0

@ थिफमास्टर यदि ऐसा है, तो सीखने का सबसे अच्छा तरीका स्रोत को देखना है :) http://james.padolsey.com/jquery/ –

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