Bất cứ khi nào bạn làm điều gì đó thay đổi chiều cao của phần tử, hãy kích hoạt sự kiện.
$("#somelement").slideDown().trigger("heightchange");
Bây giờ bạn có thể liên kết với rằng:
$("body").on("heightchange",function(e){
var $el = $(e.target); // the element that has a new height.
});
Bạn thậm chí có thể monkeypatch rất nhiều các phương pháp jQuery có thể thay đổi chiều cao và họ đã kiểm tra chiều cao trước và sau khi sử dụng phương pháp và kích hoạt sự kiện tương ứng. Dưới đây là một ví dụ chưa được kiểm tra
var topatch = ["slideup","slidedown","height","width","attr","css","animate"];
$.each(topatch,function(i,method){
var oldfn = $.fn[method];
$.fn[method] = function(){
return this.each(function(){
var $this = $(this), currHeight = $this.css("height"),
result = oldfn.apply($this,arguments);
// check for promise object to deal with animations
if ($.isFunction(result.promise)) {
result.promise().done(function(){
if (currHeight != $this.css("height")) {
$this.trigger("heightchange");
}
});
return;
}
if (currHeight != $this.css("height")) {
$this.trigger("heightchange");
}
});
};
});
Nguồn
2012-12-18 15:37:23
Điều đó sẽ rất mãnh liệt trên proc. Có yếu tố cụ thể nào bạn muốn theo dõi không? Nếu vậy, nó không quá khó. Bạn chỉ cần tạo ra một bộ đếm thời gian và xem cho chiều cao là khác nhau. – SpYk3HH
Cụ thể hơn, những yếu tố nào bạn thực hiện điều này? –
Có thể trùng lặp: http://stackoverflow.com/questions/172821/detecting-when-a-divs-height-changes-using-jquery – tungd