I found another way of doing it that is rather sneaky. Maybe someone else will find it useful. I pull out liveHandler and make my own live.add function.
var liveHandler = null; (function(){ var add = jQuery.event.add; jQuery.event.add = function(el, event, handler, data){ if(data.selector == "stealing" && !event) liveHandler = handler; else add.apply(this, arguments) } var f = function(){}, d = {selector: "stealing"} jQuery.event.add(document, "live",f,d); jQuery.event.remove(document, "live",f,d); jQuery.event.add = add; })(); //hack live to provide what we need jQuery.event.special.live.add = function( proxy, data, namespaces, live ) { jQuery.extend( proxy, data || {} ); proxy.guid += data.selector + data.live; data.liveProxy = proxy; jQuery.event.add( this, data.live, liveHandler, data ); } On Jan 13, 11:40 pm, Justin Meyer <justinbme...@gmail.com> wrote: > I'm trying to implement drag-drop for live events: > > $(".handle").live("dropped", func1); > $(".drop").live("dropon", func2); > > I'm unable to get it working without needing to change jQuery, but not > significantly. Are these types of patches still going to be accepted? > > The problem is that an efficient drag plugin works differently than > submit / change. It's not just filtering other events. Instead it's > setting up a variety of events on elements other then the element > being delegated on, and modifying the element. > > Here's my method: > > 1. when event.special[dragstart|dragend|dragging].setup is called, > save a reference to your callback on the delegated element's data > > 2. if you are the first event listening for a given selector, > delegate on mousedown for that selector > > 3. When mousedown is called, listen on the document for mousemove and > mouseup > > 4. On mousemove, call dragging handlers for the current selector, > update the position of the draggable. > > 5. On mouseup, call dragend handlers for the current selector. > > The problem is that I can't get the original event handler passed into > live (the proxy). Can special.live.add add the proxy into the > liveHandler data? > > data.liveProxy = proxy; > > This is a very minor change, but will allow for a lot of special live > events. Thanks.
-- 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.