スタイルの変更にバインドできるjQueryでイベントリスナーを作成することは可能ですか?たとえば、要素が寸法を変更したときに何かを「実行」したい場合、またはスタイル属性のその他の変更を実行したい場合、
$('div').bind('style', function() {
console.log($(this).css('height'));
});
$('div').height(100); // yields '100'
それは本当に便利でしょう。
何か案は?
更新
私自身これに答えて申し訳ありませんが、私は他の誰かに合うかもしれないきちんとしたソリューションを書きました:
(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');