Можно ли создать прослушиватель событий в jQuery, который может быть привязан к любым изменениям стиля? Например, если я хочу "сделать" что-то, когда элемент изменяет размеры или любые другие изменения в атрибуте стиля, которые я мог бы сделать:
$('div').bind('style', function() {
console.log($(this).css('height'));
});
$('div').height(100); // yields '100'
Было бы очень полезно.
Любые идеи?
UPDATE
Извините за ответ на это сам, но я написал аккуратное решение, которое может поместиться кому-то другому:
(function() {
var ev = new $.Event('style'),
orig = $.fn.css;
$.fn.css = function() {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
})();
Это временно переопределит внутренний метод prototype.css и переопределит его с помощью триггера в конце. Поэтому он работает следующим образом:
$('p').bind('style', function(e) {
console.log( $(this).attr('style') );
});
$('p').width(100);
$('p').css('color','red');