jQuery-Ereignis, um zu erkennen, wenn sich die Elementposition ändert
Lesezeit: 2 Minuten
Steve Horn
Ich würde gerne wissen, ob es ein jQuery-Ereignis gibt, mit dem ich feststellen kann, wann ein bestimmtes DIV ist top Eigentum hat sich geändert.
Zum Beispiel habe ich unsichtbare Inhalte über einem DIV. Wenn dieser Inhalt sichtbar wird, wird das DIV nach unten verschoben. Ich möchte dieses Ereignis erfassen und dann verwenden offset() Funktion, um die X/Y-Koordinaten zu erhalten.
Hast du jemals eine Lösung dafür gefunden?
– Sam Dutton
11. Februar 2011 um 15:53 Uhr
@Sam Dutton – Nein. Meine Lösung bestand darin, einige Seitenlayouts und -strukturen zu überdenken. Die Dinge wurden zu komplex.
– Steve Horn
16. Februar 2011 um 14:02 Uhr
joshperry
Die einfache Antwort ist, dass es im DOM keine Ereignisse zum Erkennen von Layout-Updates gibt.
Du hast zwei Möglichkeiten, wie ich es sehe:
Umfrage, böse, aber es kann abhängig von Ihren Anforderungen an die Aktualisierungshäufigkeit funktionieren.
Tippen Sie auf das Ereignis, das dazu führt, dass das unsichtbare DIV seine Größe ändert, und tun Sie, was Sie in diesem Handler tun müssen
Ich korrigiere mich.
Ich habe mir das DOM angesehen und das DOMAttrModified-Ereignis bemerkt und dieses gefunden JQuery-Plugin die Sie vielleicht nutzen können, um zu tun, was Sie wollen.
Wie der Artikel erwähnt, funktioniert es großartig in IE und Firefox, scheint aber Probleme in WebKit zu haben.
Ich glaube nicht, dass das verlinkte Plugin für den Fall des OP funktioniert. So wie ich es verstehe, wird das DOMAttrModified-Ereignis nur ausgelöst, wenn ein Attribut durch ein Skript geändert wird, und nicht nach einer Änderung, auf die sich das OP bezieht. Das Propertychange-Ereignis wird jedoch (glaube ich) in beiden Fällen ausgelöst: help.dottoro.com/ljdchxcl.php
– Sam Dutton
11. Februar 2011 um 15:46 Uhr
Beachten Sie, dass Ricks Lösung auch Polling verwendet, was bedeutet, dass Sie im Grunde einen Kompromiss zwischen etwas haben, das glatt aussieht und nicht unnötig durch die CPU brennt.
– devios1
21. März 2012 um 20:00 Uhr
Ich denke, Sie sollten in der Lage sein:
$(document).ready( function (){
$("#mydiv").bind("movestart", function (){ ...remember start position... });
$("#mydiv").bind("moveend", function (){ ...calculate offsets etc... });
});
Andererseits ist dies für relativ positionierte Elemente möglicherweise nicht möglich
– Strelok
10. Dezember 2008 um 3:51 Uhr
Was ist das movestart und moveend Veranstaltungen? plugins.jquery.com/event.move ? In diesem Fall scheinen diese Ereignisse mit Berührungs- und Mausbewegungen zusammenzuhängen, nicht unbedingt mit willkürlichen Änderungen der Elementposition.
– Abdul
6. Februar 2014 um 19:08 Uhr
Paulo
$("#someId").resize(function () {
// your code
});
das bringt nichts.
– Claude Martin
22. September 2017 um 13:34 Uhr
11312000cookie-checkjQuery-Ereignis, um zu erkennen, wenn sich die Elementposition ändertyes
Hast du jemals eine Lösung dafür gefunden?
– Sam Dutton
11. Februar 2011 um 15:53 Uhr
@Sam Dutton – Nein. Meine Lösung bestand darin, einige Seitenlayouts und -strukturen zu überdenken. Die Dinge wurden zu komplex.
– Steve Horn
16. Februar 2011 um 14:02 Uhr