MutationEvents are fired whenever and wherever any CRUD operation is
done on the document tree.
To do this, one needs to redesign jQuery to follow an Observer
pattern.
Where observable is a single instance of jQ 'mutator'. Imagine that
instead of this (currently in core.js )

// Handle $(""), $(null), or $(undefined)
if ( !selector ) {      return this;  }

We do this (and a lot more) :

// Handle $(""), $(null), or $(undefined)
if ( !selector ) {      return rootjQuery ;  }

Now we have rootjQuery (aka $(document) ) as an single observable
which sends MutationEvents to 'observers', which are all the other $
instances.
So every $(selector,context) is *also* an observer of the rootjQuery
(aka 'mutator'). rootjQuery  publishes (fires) MutationEvents to which
all the other '$' are subscribed.
In that (imaginary) context, every  '$' is an 'client' of the
rootjQuery which is a single 'mutator'. The only one who deals with
DOM.
The 'others' are just sending it commands to be executed on the
document tree, by rootjQuery. Which does it and signals back to all
the registered listeners, by publishing to all the subcribers,
appropriate MutationEvent objects.

Important moment here: "to ALL the subscribers". If one '$' removes a
node, all the other '$' are sent a MutationEvent about the removal.

All of this would apply to jQ 'mutator' in every browser host.
Regardless of if the browser implements MutationEvents natively or
not. For the ones that do not, some internal MutationEvents mechanism
will be implemented. Much like Sizzle implements querySelectorAll() if
host is not having it.

This obviously is a "non trivial" change to how jQ works today. Or any
other glow, dojo, moo, extjs, fusejs or prototype I know of.
But, is the only legal way, to have 2 or more simultaneous dom
document tree users.
Same applies (conceptually) to any situation with 2 or more users of a
single persistent structure.

--DBJ

--

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.


Reply via email to