2008-12-10 9 views
25

Ich möchte wissen, ob es ein jQuery-Ereignis gibt, mit dem ich feststellen kann, wann sich die Eigenschaft eines bestimmten DIVs top geändert hat.jQuery-Ereignis zum Erkennen, wenn sich die Elementposition ändert

Zum Beispiel habe ich unsichtbaren Inhalt über einem DIV. Wenn dieser Inhalt sichtbar wird, wird der DIV nach unten verschoben. Ich möchte dieses Ereignis erfassen und dann die offset() Funktion verwenden, um die X/Y-Koordinaten zu erhalten.

+2

Haben Sie jemals eine Lösung gefunden? –

+1

@Sam Dutton - Nein. Meine Lösung war, etwas von dem Seitenlayout und der Struktur zu überdenken. Die Dinge wurden zu komplex. –

Antwort

0

ich thiiink sollten Sie tun können:

$(document).ready(function(){ 
    $("#mydiv").bind("movestart", function(){ ...remember start position... }); 
    $("#mydiv").bind("moveend", function(){ ...calculate offsets etc... }); 
}); 
+0

auf einem anderen Gedanken, dies könnte für relativ positionierte Elemente nicht möglich sein – Strelok

+2

Was sind diese "movestart" und "moveend" Ereignisse? https://plugins.jquery.com/event.move/? In diesem Fall scheinen sich diese Ereignisse auf Berührungs- und Mausbewegungen zu beziehen, nicht notwendigerweise auf willkürliche Elementpositionsänderungen. – Abdull

6

Die einfache Antwort ist, dass es keine Ereignisse zur Erkennung Layout-Updates im DOM sind.

Sie haben ein paar Optionen so, wie ich es sehe:

  1. Poll, böse, aber es kann je nach Aktualisierungsfrequenz Anforderungen arbeiten.

  2. Tippen Sie in irgendein Ereignis bewirkt, dass die unsichtbaren DIV Größe zu ändern und tun, was Sie in diesem Handler


Ich selbst werde korrigieren tun müssen.

Ich schaute mir das DOM an und bemerkte das DOMAttrModified-Ereignis und fand dieses JQuery Plug-In, das Sie in der Lage sein könnten, zu tun, was Sie wollen.

Wie der Artikel erwähnt, funktioniert es gut in IE und Firefox, scheint aber Probleme in WebKit zu haben.

+2

Funky! Ich finde immer wieder coolen Scheiß auf dem Blog dieses Kerls! ;) – Strelok

+2

Im Ernst, ich weiß nicht, wie er die Zeit findet, um die Sachen zu machen, die er macht, und dann diese erstaunlich detaillierten Einträge über sie schreibt ... – joshperry

+0

Ich glaube nicht, dass das Plugin, das mit verlinkt wird, für die OPs funktioniert Fall. Wie ich es verstehe, wird das DOMAttrModified-Ereignis nur ausgelöst, wenn ein Attribut von einem Skript geändert wird und nicht nach einer Änderung, auf die sich das OP bezieht. Allerdings wird das Propertychange-Ereignis (denke ich) in beiden Fällen ausgelöst: http://help.dottoro.com/ljdchxcl.php –

-2
$("#someId").resize(function() { 

// your code 

}); 
+0

das tut nichts. –