//jQuery delegate plug-in v1.0
(function($) { $.extend($.event.special, { focusin: { setup: function() { if ($.browser.msie) return false; this.addEventListener("focus", $.event.special.focusin.handler, true); }, teardown: function() { if ($.browser.msie) return false; this.removeEventListener("focus", $.event.special.focusin.handler, true); }, handler: function(event) { var args = Array.prototype.slice.call( arguments, 1 ); args.unshift($.extend($.event.fix(event), { type: "focusin" })); return $.event.handle.apply(this, args); } }, focusout: { setup: function() { if ($.browser.msie) return false; this.addEventListener("blur", $.event.special.focusout.handler, true); }, teardown: function() { if ($.browser.msie) return false; this.removeEventListener("blur", $.event.special.focusout.handler, true); }, handler: function(event) { var args = Array.prototype.slice.call( arguments, 1 ); args.unshift($.extend($.event.fix(event), { type: "focusout" })); return $.event.handle.apply(this, args); } } }); $.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);
