WARNING: Skip to the end to avoid an in depth discussion of the
problems, and the only questions I need guidance.
------------------------------------------------------------------------
I'm going to replace JMVC's delegation lib:
http://code.google.com/p/javascriptmvc/source/browse/branches/2_0/jmvc/plugins/dom/delegate/delegate.js
with live.

I've mentioned this once before, but I'm energized after hearing
almost everything I wanted previously is a priority.

I was under the impression that the current (trunk?) code supported
submit, but after testing, it seems like it doesn't work in IE.  The
code seems to speak to that too.  Am I looking in the right place?


A few thoughts on live and using delegation.  Performance of closest
is critical if you want to support events like mouseover choosing
between > 10 different selectors.  In almost all cases, getting the
parentNode list is the most expensive part.  This is from a lot of
experience with JMVC, and it only has to calculate this list once.  To
support rapid event delegation, I suggest adding a 2nd parameter to
closest which would be a cached array of the parent list.

I've been sorta shot down by Brandon, but I don't like having to run a
query when I attach live functions.  If I have 10s of thousands of
'.todo' elements on my page (which is the reason I am using live in
the first place), I don't want to have to do a $('.todo').  Using
'live' is familiar to those who used liveQuery, but delegate would be
a better name.
$().delegate('.todo','click',function(){ ... })
But, I realize that this is almost certainly never going to happen.
Maybe there can be a $.live where I can provide the context?

The next suggestion would be adding a stopPropagation to event.
LiveHandler would check if it has been called and will simply stop
delegated events on the element without returning false from
liveHandler.  There are many cases where this is needed in our code.

But getting to the most important question - how to get submit and
change working?

For submit and change, you have to listen to multiple events (and
later be able to stop listening).  It doesn't seem there is a good way
to do this in event.add.  What would be the best way of doing this?

JMVC uses before and after filters for certain event / browser pairs
to make sure things are ok.  For example, in IE you listen for clicks
+ keypress instead of submit.  The beforeFilter makes sure the target
is an submit input.

For change in IE on a select, I listen for clicks, make sure the
selector matches the element, then the after filter checks if there is
a value (in $.data("_change_data")).  If not, there hasn't been a
change, so it saves the current value.  If there is a value, and it is
different, the filter 'approves' the change.

There are a few issues with this.  The most important is that I am
browser sniffing like crazy.  I'm not sure if this can be done w/o
browser sniffing.  The only thing I think could even work is creating
a form, dispatching a synthetic 'submit' event via fireEvent/
dispatchEvent.  Obviously, that would suck and I am not sure it will
even work.  I'm open to suggestions before I try.

The second issue is that I am putting data in _change_data.  Is there
a better place for this?

Another thing, you need to have capture option passed to event.add so
focus and blur will work.
event.add = function(elem, types, handler, data, capture){ ...}
Would this be ok?
---------------------------------------------------------------------------------
So, I can happily build all of this if I can get guidance on the 2
most important problems:
Best way to listen and remove multiple events for a single delegated
event? (EX: delegate on submit, listen for keypress and click)
How to avoid browser sniffing. (EX: know that submit doesn't bubble in
IE).

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-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