Ogni volta che si esegue un'operazione che modifica l'altezza dell'elemento, attivare un evento.
$("#somelement").slideDown().trigger("heightchange");
Ora è possibile associare a questo:
$("body").on("heightchange",function(e){
var $el = $(e.target); // the element that has a new height.
});
Si potrebbe anche monkeypatch un sacco di metodi di jQuery che possono cambiare l'altezza e li hanno testare l'altezza prima e dopo l'utilizzo del metodo e grilletto l'evento di conseguenza. Di seguito è riportato un esempio non testato
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");
}
});
};
});
fonte
2012-12-18 15:37:23
Sarebbe molto intenso sul proc. Esistono elementi specifici che desideri monitorare? Se è così, non è troppo difficile. Devi solo creare un timer e guardare che l'altezza sia diversa. – SpYk3HH
Sii più specifico, su quale elemento (i) stai facendo? –
Possibile duplicato: http://stackoverflow.com/questions/172821/detecting-when-a-divs-height-changes-using-jquery – tungd