Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <pre><code>var oldTrigger = jQuery.event.trigger; jQuery.event.trigger = function(event, data, elem) { // do stuff oldTrigger.apply(this, arguments); } </code></pre> <p>Just need to throughly double check that every trigger does go through this method.</p> <pre><code>trigger: function( type, data ) { return this.each(function() { jQuery.event.trigger( type, data, this ); }); }, </code></pre> <p>At the very least <code>$.fn.trigger</code> goes through jQuery.event.trigger</p> <pre><code> // Trigger the event, it is assumed that "handle" is a function var handle = jQuery.data( elem, "handle" ); if ( handle ) { handle.apply( elem, data ); } </code></pre> <p>Alternatively you can overwrite <code>jQuery.data</code> and intercept the setting of event handlers. </p> <pre><code>for ( var i = 0, l = this.length; i &lt; l; i++ ) { jQuery.event.add( this[i], type, handler, data ); } </code></pre> <p>The <code>bind</code> method uses <code>jQuery.event.add</code> to add handlers. You can also intercept that.</p> <pre><code>jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error").split(" "), function( i, name ) { // Handle event binding jQuery.fn[ name ] = function( fn ) { return fn ? this.bind( name, fn ) : this.trigger( name ); }; if ( jQuery.attrFn ) { jQuery.attrFn[ name ] = true; } }); </code></pre> <p>All the standard events go through <code>$.fn.trigger</code> or <code>$.fn.bind</code></p> <pre><code>if ( name === "live" ) { // bind live handler context.each(function(){ jQuery.event.add( this, liveConvert( type, selector ), { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); }); </code></pre> <p><code>$.fn.live</code> goes through <code>jQuery.event.add</code>.</p> <p>In conclusion everything goes through <code>jQuery.event.add</code> and that in turns does this : </p> <pre><code> if ( !eventHandle ) { elemData.handle = eventHandle = function() { // Handle the second event of a trigger and when // an event is called after a page has unloaded return typeof jQuery !== "undefined" &amp;&amp; !jQuery.event.triggered ? jQuery.event.handle.apply( eventHandle.elem, arguments ) : undefined; }; } </code></pre> <p>Which is writing the event handler to <code>jQuery.data( elem )</code> where <code>elem</code> is a DOM Node.</p> <p>[[<strong>In conclusion</strong>]]</p> <p>Personally I would say <code>jQuery.data</code> is complex and a pain to overwrite safely so instead just overwrite <code>jQuery.event.add</code>.</p> <p>[[<strong>Live Example</strong>]]</p> <p><a href="http://jsfiddle.net/qLRuT/8/" rel="nofollow">http://jsfiddle.net/qLRuT/8/</a></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload