Есть ли слушатель JavaScript для добавления элемента в другой элемент в DOM? - PullRequest
3 голосов
/ 23 февраля 2012

Я думаю, что все в названии.

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

jQuery("#rootElement").bind("addElementEvent", function() {
    console.log("Element was added");
});

<div id="rootElement"></div>

А когда что-то такое:

jQuery("#rootElement").append("<div >another element</div>");

Trigger:

Element was added

Я не знаю, действительно ли я ясен ...

Ответы [ 3 ]

3 голосов
/ 23 февраля 2012

Это называется "мутационные события". Эти события доступны во всех современных браузерах, но тем не менее они уже давно помечены как устаревшие.

Например

jQuery("#rootElement").bind("DOMNodeInserted", function( e ) {
    console.log("Element was added");
});

jsFiddle Демо: http://jsfiddle.net/P6wdH/

Ссылка: Ссылка на MDN DOM

Как я уже упоминал, это работает практически во всех современных браузерах. Но это все еще своего рода риск их использовать. Поскольку в какой-либо спецификации альтернативы пока нет, я не думаю, что эти события скоро исчезнут, но вы должны знать о текущем состоянии.

3 голосов
/ 23 февраля 2012

Существует плагин livequery () , который делает именно то, что вам нужно ... пример использования:

$('#idofelement').livequery(function() {
   // perform selector on $(this) to apply class   
});

Использование этого будет выполнять функцию, когда элемент DOM сid idofelement был добавлен

2 голосов
/ 23 февраля 2012

Согласно http://help.dottoro.com/ljmcxjla.php существует событие под названием DOMNodeInserted, поддерживаемое основными браузерами. Но я не знаю о старой версии IE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...