Wenn Sie etwas tun, das die Höhe des Elements ändert, lösen Sie ein Ereignis aus.
$("#somelement").slideDown().trigger("heightchange");
Jetzt können Sie an, dass binden:
$("body").on("heightchange",function(e){
var $el = $(e.target); // the element that has a new height.
});
Sie auch viele der jQuery Methoden monkeypatch könnte, die die Höhe ändern können und sie die Höhe testen vor und nach der Anwendung des Verfahrens und Trigger das Ereignis entsprechend. Unten ist ein ungetestet Beispiel
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");
}
});
};
});
Das wäre sehr intensiv auf die Proc. Gibt es bestimmte Elemente, die überwacht werden sollen? Wenn ja, ist es nicht zu schwer. Sie erstellen einfach einen Timer und achten darauf, dass die Höhe unterschiedlich ist. – SpYk3HH
Genauer gesagt, welches Element (e) machst du das? –
Mögliches Duplikat: http://StackOverflow.com/Questions/172821/Detecting-when-a-divs-Height-Changes-using-Jquery – tungd