Extending or replacing a core jquery function?

Extending or replacing a core jquery function?

A client is using an analytics tracking script that needs to be updated each time the DOM is modified (ie, an element is added or removed). Basically this script allows the client to track user actions on the site (clicks, mouseovers, etc.) and, if the user is having issues, replay the entire session to help them with their problem.

The issue we're running into is that this tracking script takes a cache of the DOM tree on page load, and when the DOM is updated it needs to specifically be notified that there has been a change... or else the script won't be able to see the nodes that have been added/removed.

Assuming all DOM manipulation is done using jQuery functions, is there a way to run some function every time the DOM is manipulated? I've noticed that all the DOM manipulation functions seem to run through the internal $.fn.domManip function, so I was wondering if it's possible to extend or replace this function from another JS file (assuming of course that all the manipulation functions DO in fact run through $.fn.domManip)?

Example (don't take this code seriously, it's more meant to illustrate what I'm trying to do):

  1. var oldDomManip = $.fn.domManip; //Copy the function (I know this isn't right)
  2. $.fn.domManip = function() {
  3.       oldDomManip(arguments);
  4.       //update the analytics program by calling it's update function here...
  5. }