Just added a generic function that should aid the implementation of this feature: http://dev.jquery.com/ticket/5189
Also added a ticket for this feature request (plus a couple more things) http://dev.jquery.com/ticket/5190 -- Ariel Flesler On Sep 3, 5:37 pm, KeeganWatkins <keeganwatk...@gmail.com> wrote: > First, this conversation started on the learningjquery.com blog > (http://www.learningjquery.com/2009/06/shorthand-methods-for-unbind). > > Ideally, I'd like to see the bind and unbind methods accept an object > of eventType/handler pairs, such that a single wrapped set could take > a hash of bindings in a single call. Something along these lines: > > (function($) { > > // Keep a copy of the old methods > $.fn._bind = $.fn.bind; > $.fn._unbind = $.fn.unbind; > > // Redefine $().bind() > $.fn.bind = function( type, data, fn ) { > // If only a map of handlers was passed... > return (arguments.length === 1) ? > > this.each(function(key, node) { > // Iterate over the map... > $.each(type, function(event, handler) { > event == "unload" ? > // ... using $.fn.one() for "unload" events... > $(this).one(event, handler) : > // ... and $.event.add() for others > jQuery.event.add( this, event, handler ); > }); > }) : > > // Otherwise, use the existing implementation as of 1.3.2, > // with slight syntactic modifications > this.each(function(key, node) { > type == "unload" ? > // Use $.fn.one() for "unload" events... > $(this).one(type, fn) : > // ... and $.event.add() for others > jQuery.event.add( this, type, fn || data, fn && data > ); > }); > > }; > > // Redefine $().unbind() > $.fn.unbind = function(type, fn) { > // If only a map of handlers was passed... > return (arguments.length === 1) > > this.each(function(){ > // Iterate over the map... > $.each(type, function(event, handler) { > // ... and unbind each using event.remove() > jQuery.event.remove( this, event, handler ); > }); > }) : > > // Otherwise, use the existing implementation as of 1.3.2, > // copied verbatim > this.each(function(){ > jQuery.event.remove( this, type, fn ); > }); > > }; > })(jQuery); > > Usage would be as follows: > $("#myID").bind({ > click : function(e) { > // handle click > }, > mouseover : function(e) { > // handle mouseover > }, > mouseout : function(e) { > // handle mouseout > } > > }); > > Or, with named functions (ideal for later use of $().unbind()): > $("#myID").bind({ > click : clickHandler, > mouseover : mouseoverHandler, > mouseout : mouseoutHandler > > }); > > function clickHandler(e) { > // handle click > > } > > function mouseoverHandler(e) { > // handle mouseover > > } > > function mouseoutHandler(e) { > // handle mouseout > > } > > With named function references, unbinding multiple events would be > simple: > $("#myID").unbind({ > click : clickHandler, > mouseover : mouseoverHandler, > mouseout : mouseoutHandler > > }); > > I realize there are some potential issues, such as the ability to pass > custom data to $().bind() is lost when an object of event/handler > pairs is passed. I personally don't usually use it anyhow, and binding > events individually will still support custom data (as the > implementation is the same). --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---