jQuery-Ereignis, um zu erkennen, wenn sich die Elementposition ändert

Lesezeit: 2 Minuten

Benutzer-Avatar
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

Benutzer-Avatar
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:

  1. Umfrage, böse, aber es kann abhängig von Ihren Anforderungen an die Aktualisierungshäufigkeit funktionieren.

  2. 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

Benutzer-Avatar
Paulo

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

// your code

});

  • das bringt nichts.

    – Claude Martin

    22. September 2017 um 13:34 Uhr

1131200cookie-checkjQuery-Ereignis, um zu erkennen, wenn sich die Elementposition ändert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy