Я недавно написал плагин, который делает именно это - jquery.initialize
Вы используете его так же, как .each
функция
$(".some-element").initialize( function(){
$(this).css("color", "blue");
});
Отличие от .each
состоит в том, что он берет ваш селектор, в данном случае .some-element
и ждет новых элементов с этим селектором в будущем, если такой элемент будет добавлен, он также будет инициализирован.
В нашем случае функция инициализации просто меняет цвет элемента на синий. Так что, если мы добавим новый элемент (неважно, с ajax или даже инспектором F12 или чем-то еще), например:
$("<div/>").addClass('some-element').appendTo("body"); //new element will have blue color!
Плагин начнет его немедленно. Также плагин гарантирует, что один элемент инициализируется только один раз. Поэтому, если вы добавите элемент, .deatch()
из тела и добавите его снова, он не будет инициализирован снова.
$("<div/>").addClass('some-element').appendTo("body").detach()
.appendTo(".some-container");
//initialized only once
Плагин основан на MutationObserver
- он будет работать на IE9 и 10 с зависимостями, как описано на странице чтения .