Вы можете использовать смесь из jQuery && События DOM уровня 3 (см. Поддержку браузера ниже).
Если вы хотите проверить изменения в содержимое , вы можете сделать это:
var $a = $('a');
$a.one('DOMNodeInserted', function(e) {
console.log('content changed!: ', e);
console.log('new content: ', $(this).html());
});
$a.one('DOMAttrModified', function(e) {
console.log('attribute changed!: ');
console.log('attribute that was changed: ', e.attrName);
});
Просмотреть этот код в действии: http://jsfiddle.net/wJbMj/1/
Ссылка : DOMNodeInserted, DOMAttrModified
Хотя приведенное выше решение на самом деле довольно удобно для меня, оно будет работать только в браузере, который поддерживает эти события.Чтобы получить более общее решение, вы можете подключить в методы установки jQuerys.Недостатком этого решения является то, что вы будете ловить только те изменения, которые были сделаны с помощью jQuery.
var _oldAttr = $.fn.attr;
$.fn.attr = function() {
console.log('changed attr: ', arguments[0]);
console.log('new value: ', arguments[1]);
return _oldAttr.apply(this, arguments);
};
Вы можете подключиться к .text()
и .html()
точно таким же образом.Вам необходимо проверить, соответствует ли значение this
в перезаписанных методах правильному DOM-узлу.