diff -r 56befcb22751 -r 94a1dc255022 thd/web/js/jquery-tooltip/lib/jquery.delegate.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/thd/web/js/jquery-tooltip/lib/jquery.delegate.js Tue Sep 22 16:40:38 2009 +0200 @@ -0,0 +1,56 @@ +/* + * jQuery delegate plug-in v1.0 + * + * Copyright (c) 2007 Jörn Zaefferer + * + * $Id: jquery.delegate.js 4786 2008-02-19 20:02:34Z joern.zaefferer $ + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + */ + +// provides cross-browser focusin and focusout events +// IE has native support, in other browsers, use event caputuring (neither bubbles) + +// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation +// handler is only called when $(event.target).is(delegate), in the scope of the jQuery-object for event.target + +// provides triggerEvent(type: String, target: Element) to trigger delegated events +;(function($) { + $.each({ + focus: 'focusin', + blur: 'focusout' + }, function( original, fix ){ + $.event.special[fix] = { + setup:function() { + if ( $.browser.msie ) return false; + this.addEventListener( original, $.event.special[fix].handler, true ); + }, + teardown:function() { + if ( $.browser.msie ) return false; + this.removeEventListener( original, + $.event.special[fix].handler, true ); + }, + handler: function(e) { + arguments[0] = $.event.fix(e); + arguments[0].type = fix; + return $.event.handle.apply(this, arguments); + } + }; + }); + + $.extend($.fn, { + delegate: function(type, delegate, handler) { + return this.bind(type, function(event) { + var target = $(event.target); + if (target.is(delegate)) { + return handler.apply(target, arguments); + } + }); + }, + triggerEvent: function(type, target) { + return this.triggerHandler(type, [jQuery.event.fix({ type: type, target: target })]); + } + }) +})(jQuery);