views:

35

answers:

3

Is there any way to fire an event when an object of a certain type is created?

I have an <div> element with editableContent="true" and when the user presses enter within the <div>, a new <div> is created that takes up just that line. Is it possible to have an event fire whenever a <div> object is created within my original <div> object?

I know one way to do this would to listen for keystrokes and on an 'enter' key being pressed, do a bunch of logic to figure out what to do, but this seems a lot less elegant - so it would be great if there was another way.

Thanks!

+1  A: 

You have a function that creates a div when you press enter. Why don't you just add a function call at the end of it.

function createDiv(){
  //create div 
  //append div
  divCreated();
}
qw3n
I don't have a function that creates a div when you press enter, the div is created automatically (this is just the standard behavior of an object with contentEditable=true; )
Andrew
A: 

There's no default callbacks for new elements creating. The first thing I have in mind - you can add an event listener for mouseUp event and check content delta (changed part) - if it looks like an element markup with regexp.

fantactuka
+2  A: 

There are the a bunch of DOM Events and some of them will be supported by firefox for example. But I dont think that IE will support only one of them. Here is a complete list. First you can fire a custom event every time you create a new div, or you have a settimeout that checks every second if the count of you divs childnodes has changed.

eskimoblood
the DOMNodeInserted event should be what I need. luckily it's supported by everyone but IE.
Andrew