Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
I've already landed the commits - looks great - thanks! (I'll close the ticket once my network stops flaking out.) --John On Sat, Nov 7, 2009 at 5:47 PM, Robert Katić robert.ka...@gmail.com wrote: I opened a ticket: http://dev.jquery.com/ticket/5470 with link on commit. Commit also includes context inside liveHandler (it is a too small change to make a separate commit). Component is unfiled. Please tell me if I made mistakes opening this ticket. On Nov 6, 3:01 pm, John Resig jere...@gmail.com wrote: 1. Calling closest, context argument still is not used. I was unable to find the proper ticket. Would I open one? 2. Storing how much a parent is close to an element with data API is an big overhead. An jQuery.lastCloser or something similar would be enough. Also it would speed up sorting inside liveHandler with somethin like this: ... elems.push({ elem: elem, fn: fn, closer: jQuery.lastCloser }); elems.sort(function( a, b ) { return a.closer - b.closer; }); I'd appreciate tickets/patches for both of these - they both sound like great additions. --John -- 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.
Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
Meyer, delegate was my first candidate too but I was worry that it was overused :). Seams that I was wrong. Will update it with delegate ASAP. --Robert On 6. stu. 2009., at 02:42, Justin Meyer justinbme...@gmail.com wrote: How about $(#something).delegate(.thing,click, func). It almost makes too much sense :). On Nov 5, 6:31 pm, Robert Katić robert.ka...@gmail.com wrote: I wonder why there would be an $.live with document as the only interesting context. Something like $(document).zombi(selector, type, ...) would be more flexible (I know, zombi is not nice, but I have no inspirations about a more suitable name). To avoid to repeat selector on multiple bindings, I suggest something like: $(document).make(selector) .zombi(type, ...) .zombi(type, ...) An possible implementation of that:http://gist.github.com/227508 Maybe this is only a silly idea for majority of users (now), but I am really of idea that this have even more sense then the current $.fn.live. On Nov 5, 2:44 am, xwisdom xwis...@gmail.com wrote: Hello, Just wondering if version 1.4 will include improvements to live() events. See example here:http://www.zachleat.com/web/2009/05/08/ performance-caveat-with-jquery... -- 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.
Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
Also, @robert, my solution supports the following notation, similar to yours but using the familiar jQuery syntax (before/after DOMReady): $.live(#mySelector, click, fn1) .live(#mySelector, mouseover, fn2) ...; I understand the logic behind you wanting a $.live method (for the edge cases where, presumably, you have hundreds or thousands of elements that you're trying to match - and you don't want to run the initial selector). Although there's a lot that I don't like about it: - You are now passing in a selector to a non $(...) or .foo() method. This goes against all the conventions that the library has - when you interact with DOM elements, stay within the jQuery set. - The only case where this matters is in a fringe case (namely, only when you use both a complicated selector AND run it in IE 8, since all other browsers are using querySelectorAll) - but the existence of the method in jQuery would remove the need to ever use the one method that everyone should use. - Presumably since you're in a situation where you're really caring about performance - then why are you using .live to begin with? Shouldn't you be binding lower in the document? This is why the closest method was added, to make tasks like this even easier. I would simply recommend: If you're in a situation where you're starting with a critical number of elements on your page, enough to ruin your pages' overall performance, then you should use a basic form of event delegation, like so: $(#someRootTable).click(function(e){ $(e.target).closest(td.foo).each(function(){ // Your code goes here. }); }); Which is really what you should be doing anyway (live method or not). --John -- 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.
Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
What about something like this: $.live = function(selector, type, callback) { $.fn.live.call({ selector: selector }, type, callback); } On Thu, Nov 5, 2009 at 7:13 AM, xwisdom xwis...@gmail.com wrote: Hi John, Thanks for the quick feedback IMO, I think it would be handy to have something like $.live as I can see where it would be of great benefit when working with a lot of elements. -- 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.
Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
$(#someRootTable).delegate(td.foo, click, function(e){ // Your code goes here. }); Would be easer and safer because the event will be handlet only by td.foo elements inside #someRootTable. --Robert On 6. stu. 2009., at 04:56, John Resig jere...@gmail.com wrote: $(#someRootTable).click(function(e){ $(e.target).closest(td.foo).each(function(){ // Your code goes here. }); }); -- 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.
Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
If you want to limit, just do this (using the nightlies): $(#someRootTable).click(function(e){ $(e.target).closest(td.foo, this).each(function(){ // Your code goes here. }); }); Still pretty simple and requires no additional functionality. I may just write this up as an example and add it to the live and closest docs. --John On Fri, Nov 6, 2009 at 5:22 AM, Robert Katić robert.ka...@gmail.com wrote: $(#someRootTable).delegate(td.foo, click, function(e){ // Your code goes here. }); Would be easer and safer because the event will be handlet only by td.foo elements inside #someRootTable. --Robert On 6. stu. 2009., at 04:56, John Resig jere...@gmail.com wrote: $(#someRootTable).click(function(e){ $(e.target).closest(td.foo).each(function(){ // Your code goes here. }); }); -- 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.
Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
I suppose you will need an return false; too at the end of the handler... --Robert On 6. stu. 2009., at 05:29, John Resig jere...@gmail.com wrote: If you want to limit, just do this (using the nightlies): $(#someRootTable).click(function(e){ $(e.target).closest(td.foo, this).each(function(){ // Your code goes here. }); }); Still pretty simple and requires no additional functionality. I may just write this up as an example and add it to the live and closest docs. --John On Fri, Nov 6, 2009 at 5:22 AM, Robert Katić robert.ka...@gmail.com wrote: $(#someRootTable).delegate(td.foo, click, function(e){ // Your code goes here. }); Would be easer and safer because the event will be handlet only by td.foo elements inside #someRootTable. --Robert On 6. stu. 2009., at 04:56, John Resig jere...@gmail.com wrote: $(#someRootTable).click(function(e){ $(e.target).closest(td.foo).each(function(){ // Your code goes here. }); }); -- 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.
Re: [jquery-dev] Re: Will the live() method be improved in 1.4?
No you will not. My Mistake --Robert On 6. stu. 2009., at 05:29, John Resig jere...@gmail.com wrote: If you want to limit, just do this (using the nightlies): $(#someRootTable).click(function(e){ $(e.target).closest(td.foo, this).each(function(){ // Your code goes here. }); }); Still pretty simple and requires no additional functionality. I may just write this up as an example and add it to the live and closest docs. --John On Fri, Nov 6, 2009 at 5:22 AM, Robert Katić robert.ka...@gmail.com wrote: $(#someRootTable).delegate(td.foo, click, function(e){ // Your code goes here. }); Would be easer and safer because the event will be handlet only by td.foo elements inside #someRootTable. --Robert On 6. stu. 2009., at 04:56, John Resig jere...@gmail.com wrote: $(#someRootTable).click(function(e){ $(e.target).closest(td.foo).each(function(){ // Your code goes here. }); }); -- 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.