Có thể tạo một trình lắng nghe sự kiện trong jQuery có thể bị ràng buộc với bất kỳ thay đổi kiểu nào không? Ví dụ: nếu tôi muốn "làm" một cái gì đó khi một phần tử thay đổi kích thước hoặc bất kỳ thay đổi nào khác trong thuộc tính kiểu tôi có thể làm:
$('div').bind('style', function() {
console.log($(this).css('height'));
});
$('div').height(100); // yields '100'
Nó sẽ thực sự hữu ích.
Có ý kiến gì không?
CẬP NHẬT
Xin lỗi vì đã tự trả lời, nhưng tôi đã viết một giải pháp gọn gàng có thể phù hợp với người khác:
(function() {
var ev = new $.Event('style'),
orig = $.fn.css;
$.fn.css = function() {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
})();
Điều này sẽ tạm thời ghi đè phương thức mẫu.css bên trong và xác định lại nó bằng một kích hoạt ở cuối. Vì vậy, nó hoạt động như thế này:
$('p').bind('style', function(e) {
console.log( $(this).attr('style') );
});
$('p').width(100);
$('p').css('color','red');