it-swarm.com.de

Holen Sie sich die Position eines festen Div mit jquery

Ich habe ein div mit der Position "fixed" und möchte den Wert seiner Position relativ zum gesamten Dokument erhalten, während der Benutzer die Seite nach unten scrollt.

Nehmen wir also an, ich setze das div auf (x = 0, y = 0) und dann scrollt der Benutzer ein Stück nach unten und jetzt ist das div im Verhältnis zum Dokument eingeschaltet (X = 0, y = 300). Ich möchte diese Informationen erhalten, ich möchte die genaue Position dieses Bereichs in jedem Moment wieder relativ zum gesamten Dokument, nicht zum Fenster oder zum Browser wissen.

Ich habe viele Dinge ausprobiert, aber nichts scheint zu bekommen, was ich versuche.

Einer von ihnen ist dieser Code, der bei einem festen div nicht funktioniert :

var position = $("#fixed").offset(); /*it gets the position of the div
                                     "fixed" relative to the document*/
$("#fixed").html(position.top);      /*it prints the obtained
                                     value on the div "fixed"*/

Hier finden Sie den laufenden Code , und Sie können sehen, dass sich der Wert der Position des div nicht ändert, wenn Sie nach unten scrollen .

Wenn ich mich nicht irre, sollte der Code jedes Mal, wenn er seine vertikale Position relativ zum Dokument ändert, einen neuen Wert auf dem div ausgeben. Aber es stellt sich heraus, dass es nicht passiert.


Gelöst:

Die Frage wurde von codef0rmer gelöst. Ich habe das Scrollen nicht verfolgt um den Wert der Position des festen Div zu aktualisieren. Ich war ein Idiot. Also der endgültige Code funktioniert gut so, wie er es geschrieben hat:

$(function () {
    var position = $("#fixed").offset();
    $("#fixed").html(position.top);

    $(window).scroll(function () {
       var position = $("#fixed").offset();
        $("#fixed").html(position.top);
    });
})

Und hier sehen Sie den laufenden Code.

Vielen Dank an alle und speziell an codef0rmer.

14
m4rk

sie können .offset() verwenden, um die aktuellen Koordinaten des Elements relativ zum Dokument abzurufen, wohingegen .position() die aktuellen Koordinaten eines Elements relativ zu seinem übergeordneten Versatz abruft.

14
codef0rmer

.offset () gibt die Koordinaten relativ zum gesamten Dokument an.

Mit der .offset () -Methode können wir die aktuelle Position eines Elements relativ zum Dokument abrufen. Vergleichen Sie dies mit .position (), wodurch die aktuelle Position relativ zum übergeordneten Versatz abgerufen wird. Wenn Sie ein neues Element für die globale Bearbeitung (insbesondere für die Implementierung von Drag-and-Drop) auf ein vorhandenes Element positionieren, ist .offset () sinnvoller.

.offset () gibt ein Objekt zurück, das die Eigenschaften top und left enthält.

Hinweis: jQuery unterstützt nicht das Abrufen der Versatzkoordinaten ausgeblendeter Elemente oder das Berücksichtigen von Rahmen, Rändern oder Auffüllungen für das body-Element.

4
j08691

Es sei denn, Sie aktualisieren die Seite und die Bildlaufleiste befindet sich zum Zeitpunkt der Initialisierung an einer anderen Position.

0
Barry