Juste une preuve de concept :
Regardez le gist pour voir des annotations et rester à jour :
https://gist.github.com/yckart/c893d7db0f49b1ea4dfb
(function ($) {
var methods = ['addClass', 'toggleClass', 'removeClass'];
$.each(methods, function (index, method) {
var originalMethod = $.fn[method];
$.fn[method] = function () {
var oldClass = this[0].className;
var result = originalMethod.apply(this, arguments);
var newClass = this[0].className;
this.trigger(method, [oldClass, newClass]);
return result;
};
});
}(window.jQuery || window.Zepto));
L'utilisation est assez simple, il suffit d'ajouter un nouveau listender sur le nœud que vous voulez observer et de manipuler les classes comme d'habitude :
var $node = $('div')
// listen to class-manipulation
.on('addClass toggleClass removeClass', function (e, oldClass, newClass) {
console.log('Changed from %s to %s due %s', oldClass, newClass, e.type);
})
// make some changes
.addClass('foo')
.removeClass('foo')
.toggleClass('foo');
8 votes
Sept ans plus tard, avec l'adoption assez large des MutationObservers dans les navigateurs modernes, la réponse acceptée ici devrait vraiment être mise à jour pour être M. Br's .
0 votes
Cela pourrait vous aider. stackoverflow.com/questions/2157963/
0 votes
En complément de la réponse de Jason, j'ai trouvé ceci : stackoverflow.com/a/19401707/1579667