JQuery'de herhangi bir stil değişikliğine bağlanabilecek bir olay dinleyicisi oluşturmak mümkün müdür? Örneğin, bir öğe boyutları değiştirdiğinde ya da yapabileceğim stil özniteliğindeki herhangi bir değişiklik olduğunda "bir şey" yapmak istiyorsanız:
$('div').bind('style', function() {
console.log($(this).css('height'));
});
$('div').height(100); // yields '100'
Gerçekten faydalı olurdu.
Herhangi bir fikir?
GÜNCELLEME
Bunu kendim cevapladığım için özür dilerim, ama bir başkasına uyabilecek düzgün bir çözüm yazdım:
(function() {
var ev = new $.Event('style'),
orig = $.fn.css;
$.fn.css = function() {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
})();
Bu, dahili prototy..cs yöntemini geçici olarak geçersiz kılar ve sonunda bir tetikleyici ile yeniden tanımlar. Yani şu şekilde çalışır:
$('p').bind('style', function(e) {
console.log( $(this).attr('style') );
});
$('p').width(100);
$('p').css('color','red');