My concern is mostly the confusion that it will cause with less experienced
developers that are using jQuery... Perhaps I'm just over thinking the
situation.
I just can't past the thought that bind() and bind() might confuse some
(especially since they do different tasks, unlike indexOf() and indexOf()
that do the same thing but for a string or an array)

I'm also not really interested in debating something that's just an opinion.

Rick

On Sat, Sep 5, 2009 at 2:06 PM, Karl Swedberg <k...@englishrules.com> wrote:

> Hi Rick,
> I don't understand how this is problematic. jQuery's bind() is a method of
> jQuery.prototype, not Function.prototype. And it's not like jQuery has never
> had method names that are the same as native JavaScript method names;
> slice() comes to mind.
>
> Maybe you're concerned about potential confusion?
>
> --Karl
>
> ____________
> Karl Swedberg
> www.englishrules.com
> www.learningjquery.com
>
>
>
>
> On Sep 5, 2009, at 12:14 PM, Rick Waldron wrote:
>
> I hate to be the one that brings this up, but I feel it should be
> mentioned: Regardless of what your write here, bind() is problematic in the
> long run:
>
>
> http://www.ecma-international.org/publications/files/drafts/tc39-2009-025.pdf
>
> Jump to the pdf page 128 (the actual document page # is 114)
>
>
> I've recently been working on an elegant feature detection/argument type
> conditional patch for this issue. Ideally the solution i'm working towards
> is one that will allow jQuery's current bind() unbind() to work as it does,
> but also allow the correct Function.prototype.bind() usage
>
> Rick
>
>
>
>
>
>
>
>
>
> On Sat, Sep 5, 2009 at 4:36 AM, Oleg Slobodskoi <oleg...@googlemail.com>wrote:
>
>>
>> Your way is not shorter as this one, and such case, were you need to
>> bind a lot of different events with different handler to the same
>> element, is not very often. In the most cases you want to bind
>> different events to different elements. If you are binding to the same
>> element a lot of events you can also do all your actions in one
>> handler by checking the e.type.
>>
>> $("#myID").click( function(e) {
>>    // handle click
>> })
>> . mouseover( function(e) {
>>    // handle mouseover
>> })
>> . mouseout : function(e) {
>>    // handle mouseout
>> });
>>
>> On Sep 3, 10: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
-~----------~----~----~----~------~----~------~--~---

Reply via email to