2010-07-23 4 views
2

Есть ли способ запустить событие при создании объекта определенного типа?событие пожара javascript при создании объекта

У меня есть <div> элемент с editableContent="true" и когда пользователь нажимает войти в <div>, новый <div> создается, что занимает только эту строку. Возможно ли иметь пожар события всякий раз, когда объект <div> создается в моем первоначальном объекте <div>?

Я знаю, что один из способов сделать это - послушать нажатия клавиш и нажатие клавиши ввода, сделать кучу логики, чтобы понять, что делать, но это кажется намного менее элегантным - так что это будет здорово, если бы был другой путь.

Спасибо!

ответ

3

Есть куча DOM Events, а некоторые из них будут, например, supported by firefox. Но я не думаю, что IE поддержит только один из них. Here - полный список. Сначала вы можете запускать настраиваемое событие каждый раз, когда вы создаете новый div, или у вас есть привязка, которая проверяет каждую секунду, если число ваших дочерних элементов divs изменилось.

+0

Событие DOMNodeInserted должно быть то, что мне нужно. к счастью, это поддерживается всеми, кроме IE. – Andrew

1

У вас есть функция, которая создает div, когда вы нажимаете enter. Почему бы вам просто не добавить вызов функции в конце.

function createDiv(){ 
    //create div 
    //append div 
    divCreated(); 
} 
+0

У меня нет функции, которая создает div при нажатии enter, div создается автоматически (это просто стандартное поведение объекта с contentEditable = true;) – Andrew

1

Нет никаких обратных вызовов по умолчанию для создания новых элементов. Первое, что я имею в виду - вы можете добавить прослушиватель событий для события mouseUp и проверить содержимое delta (измененная часть) - если это похоже на разметку элемента с регулярным выражением.

0

Все, кто ищет способ реагировать на изменения в DOM, должны принимать во внимание MutationObserver. Это стандартная функция DOM4, реализованная в настоящее время в все последние (даже не все современные, но последние!) Браузеры.

Смежные вопросы