thd/web/js/jquery-tooltip/lib/.svn/text-base/jquery.delegate.js.svn-base
changeset 104 8e4fe6f3337d
parent 103 d2af8a210f5d
child 105 c8f710cd1fb1
equal deleted inserted replaced
103:d2af8a210f5d 104:8e4fe6f3337d
     1 /*
       
     2  * jQuery delegate plug-in v1.0
       
     3  *
       
     4  * Copyright (c) 2007 Jörn Zaefferer
       
     5  *
       
     6  * $Id: jquery.delegate.js 4786 2008-02-19 20:02:34Z joern.zaefferer $
       
     7  *
       
     8  * Dual licensed under the MIT and GPL licenses:
       
     9  *   http://www.opensource.org/licenses/mit-license.php
       
    10  *   http://www.gnu.org/licenses/gpl.html
       
    11  */
       
    12 
       
    13 // provides cross-browser focusin and focusout events
       
    14 // IE has native support, in other browsers, use event caputuring (neither bubbles)
       
    15 
       
    16 // provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
       
    17 // handler is only called when $(event.target).is(delegate), in the scope of the jQuery-object for event.target 
       
    18 
       
    19 // provides triggerEvent(type: String, target: Element) to trigger delegated events
       
    20 ;(function($) {
       
    21 	$.each({
       
    22 		focus: 'focusin',
       
    23 		blur: 'focusout'	
       
    24 	}, function( original, fix ){
       
    25 		$.event.special[fix] = {
       
    26 			setup:function() {
       
    27 				if ( $.browser.msie ) return false;
       
    28 				this.addEventListener( original, $.event.special[fix].handler, true );
       
    29 			},
       
    30 			teardown:function() {
       
    31 				if ( $.browser.msie ) return false;
       
    32 				this.removeEventListener( original,
       
    33 				$.event.special[fix].handler, true );
       
    34 			},
       
    35 			handler: function(e) {
       
    36 				arguments[0] = $.event.fix(e);
       
    37 				arguments[0].type = fix;
       
    38 				return $.event.handle.apply(this, arguments);
       
    39 			}
       
    40 		};
       
    41 	});
       
    42 
       
    43 	$.extend($.fn, {
       
    44 		delegate: function(type, delegate, handler) {
       
    45 			return this.bind(type, function(event) {
       
    46 				var target = $(event.target);
       
    47 				if (target.is(delegate)) {
       
    48 					return handler.apply(target, arguments);
       
    49 				}
       
    50 			});
       
    51 		},
       
    52 		triggerEvent: function(type, target) {
       
    53 			return this.triggerHandler(type, [jQuery.event.fix({ type: type, target: target })]);
       
    54 		}
       
    55 	})
       
    56 })(jQuery);