Watch for Dynamically Added Class
Is there a listener where I can watch and run code if a class is dynamically added to an element? I'm on a WordPress CMS and a plugin I'm using us adding a class dynamically, I want to catch on when that happens and run some custom code.
change / onChange doesn't seem to work:
$('#test').change(function(){
alert('test');
});
Is there another listener I can add that will catch this?
I didn't think it mattered at first, but the dynamic class(es) are being added after an ajax call. I'm currently trying to work with ajaxComplete()
but not having any luck.
Solution 1:
Try
$(document).ready(function() {
var target = $("#test").get(0);
// create an observer instance
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// do stuff when
// `attributes` modified
// i.e.g.,
alert(mutation.type);
target.innerHTML = "class added: "
+ "<em>"
+ target.className
+ "</em>";
});
});
// configuration of the observer:
var config = { attributes: true };
// pass in the target node, as well as the observer options
observer.observe(target, config);
$("#test").addClass("test-1");
// later, you can stop observing
// observer.disconnect();
})
jsfiddle http://jsfiddle.net/guest271314/35cVL/
see https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver