Andrew
Andrew

Reputation: 185

Fire JavaScript event on object creation

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.

Upvotes: 2

Views: 3621

Answers (4)

Konstantin Smolyanin
Konstantin Smolyanin

Reputation: 19103

Everybody who looking for a way to react to changes in a DOM should take into consideration MutationObserver. It is a standard DOM4 feature currently implemented in all latest (even not all modern but latest!) browsers.

Upvotes: 0

Andreas K&#246;berle
Andreas K&#246;berle

Reputation: 110922

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.

Upvotes: 3

fantactuka
fantactuka

Reputation: 3334

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.

Upvotes: 1

qw3n
qw3n

Reputation: 6334

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();
}

Upvotes: 1

Related Questions