È possibile creare un listener di eventi in jQuery che può essere associato a eventuali cambiamenti di stile? Ad esempio, se voglio "fare" qualcosa quando un elemento cambia dimensioni, o qualsiasi altra modifica dell'attributo di stile, potrei fare:
$('div').bind('style', function() {
console.log($(this).css('height'));
});
$('div').height(100); // yields '100'
Sarebbe davvero utile.
Qualche idea?
AGGIORNARE
Mi spiace di aver risposto, ma ho scritto una soluzione chiara che potrebbe adattarsi a qualcun altro:
(function() {
var ev = new $.Event('style'),
orig = $.fn.css;
$.fn.css = function() {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
})();
Questo sostituirà temporaneamente il metodo prototype.css interno e lo ridefinirà con un trigger alla fine. Quindi funziona così:
$('p').bind('style', function(e) {
console.log( $(this).attr('style') );
});
$('p').width(100);
$('p').css('color','red');