This is exactly what I was getting at... With regard to event handler .bind() and fn.bind()
So far with my $.hitch tests, the one thing I dislike is the argument structure. It does what it should but I'd much prefer a function.prototype.bind() if given the choice. -- Sent from my Palm Prē ajpiano wrote: I love the idea of extending scope manipulation to any function, rather than only event handlers. Callbacks to ajax requests often need a better scope than the XHR, and while I look forward to 1.4's functionality for event handlers, it would really be a shame to continue to force people to use non-jQuery solutions for full scope manipulation. That said, and while I do love (and frequently recommend) $.hitch, I prefer an approach more like Prototype or Underscore's that doesn't involve passing so many strings. --adam On Dec 29, 3:45 pm, Peter Higgins <phigg...@gmail.com> wrote: > It is a short-port of Dojo's dojo.hitch(). The only thing it doesn't do > that Dojo's does is currying the arguments in the original hitched > function, eg: > > // a bad example off the top of my head > var x = $(".nodes"); > var clicker = $.hitch(x, "bind", "click"); > > clicker(function(e){ > // this just called $(.nodes").bind("click", arguments[0]) > > }); > > It would be another few bytes to support that. dojo.partial is equally > as neat. > > Regards, > Peter > > > > Rick Waldron wrote: > > $.hitch() is a great "fn.bind()" solution, I still want to try a > > variety of scope related tests, but so far its really solid. I love > > the fact that you included the exception for a non existent method, I > > referred to Prototype's latest and there is no such check. > > > Hats off. > > > Rick > > > On Tue, Dec 29, 2009 at 12:40 PM, Rick Waldron <waldron.r...@gmail.com > > <mailto:waldron.r...@gmail.com>> wrote: > > > Agreed, that is slick. As soon as I get back to the office I'm > > going to test it, I look forward to this. > > > -- Sent from my Palm Prē > > > ------------------------------------------------------------------------ > > aHeckman wrote: > > > Yeah this looks good Peter. This should be in core IMHO. > > > BTW, you're running for president? LOL > > > On Dec 29, 9:24 am, Peter Higgins <phigg...@gmail.com > > <mailto:phigg...@gmail.com>> wrote: > > > ... this is why I keep suggesting making the bind functionality as > > > explicit function call, rather than hidden away in one or two api's: > > > >http://higginsforpresident.net/js/static/jq.hitch.js > > > > It does not extend any native prototypes, is useful and a bit magic > > > (with the string->method resolution). > > > > Regards, > > > Peter > > > > aHeckman wrote: > > > > I too feel relying on a function.prototype.bind implementation > > would > > > > be the most forward looking but I'm not sure that jives with the > > > > general approach of jQuery: > > > > > jQuery doesn't extend Native.prototype.anything. > > > > > On Dec 29, 1:12 am, Daniel Friesen <nadir.seen.f...@gmail.com > > <mailto:nadir.seen.f...@gmail.com>> wrote: > > > > >> Rick Waldron wrote: > > > > >>> Available, as in the "scope" argument is being retrofitted to an > > > >>> existing function, and ONLY to that function. > > > > >>> I don't get what you are talking about a fn.bind() > > implementation in > > > >>> jQuery, or what you mean by available in just one > > function though. > > > > >>> Read ES5. > > > > >>> function.prototype.bind() > > > > >> I already read ES5, I use portions of ES5 in a number of js > > server-based > > > >> projects already. > > > > >> However I don't get "ONLY" one function, since the whole point of > > > >> .bind() is to bind a `this` onto ONE function with one call. > > It's not > > > >> bind otherwise. > > > > >> So I don't see any limitation. Unless you are under the > > > >> misinterpretation that after you have called .bind() on one > > function you > > > >> have modified that function and bound it's `this`. .bind() > > doesn't > > > >> modify the function, it returns a new one. > > > >> From ES5 15.3.4.5 Function.prototype.bind> The bind method > > takes one or more arguments, thisArg and (optionally) > > > > >>> arg1, arg2, etc, and returns a *new* > > > >>> function object by performing the following steps: > > > > >> So this is valid ES5 code. > > > > >> "use strict"; > > > >> var a = function() { alert(this); }; > > > >> var a1 = a.bind("a"); > > > >> var a2 = a.bind("b"); > > > > >> a(); // Alerts undefined > > > >> a1(); // Alerts "a" > > > >> a2(); // Alerts "b" > > > > >>> On Mon, Dec 28, 2009 at 7:43 PM, Daniel Friesen > > > >>> <nadir.seen.f...@gmail.com > > <mailto:nadir.seen.f...@gmail.com> > > <mailto:nadir.seen.f...@gmail.com > > <mailto:nadir.seen.f...@gmail.com>>> wrote: > > > > >>> I made a post about how confusing people may find the > > name bind some > > > >>> time ago. Suggested renaming bind to something like > > event, and keeping > > > >>> bind as an alias of course. That was rejected. > > > > >>> I don't get what you are talking about a fn.bind() > > implementation in > > > >>> jQuery, or what you mean by available in just one > > function though. > > > > >>> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) > > > >>> [http://daniel.friesen.name] > > > > >>> Rick Waldron wrote: > > > >>> > John, > > > > >>> > While I'm glad to see a scope arg available, i still > > think this is > > > >>> > negligent to the future of jQuery and ES standards. I > > really think a > > > >>> > fn.bind() implementation would ideal (since it would be > > jQuery-wide > > > >>> > and not just available in one function), but as I've > > noted in > > > >>> the past > > > >>> > and is exampled here, beginners may find this syntax a > > bit boggling: > > > > >>> > $(foo).bind('event', fn.bind(bar) ); > > > > >>> > Rick > > > > >> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) > > [http://daniel.friesen.name] > > > > > -- > > > > > 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 <mailto:jquery-dev@googlegroups.com>. > > > > To unsubscribe from this group, send email to > > jquery-dev+unsubscr...@googlegroups.com > > <mailto:jquery-dev%2bunsubscr...@googlegroups.com>. > > > > For more options, visit this group > > athttp://groups.google.com/group/jquery-dev?hl=en > > <http://groups.google.com/group/jquery-dev?hl=en>. > > > -- > > > 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 > > <mailto:jquery-dev@googlegroups.com>. > > To unsubscribe from this group, send email to > > jquery-dev+unsubscr...@googlegroups.com > > <mailto:jquery-dev%2bunsubscr...@googlegroups.com>. > > For more options, visit this group at > > http://groups.google.com/group/jquery-dev?hl=en. > > > -- > > > You received this message because you are subscribed to the Google > > Groups "jQuery Development" group. > > To post to this group, send email to jquery-...@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. -- You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-...@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. -- You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-...@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.