finde Elemente, die unter (visuell) einem Element in jquery gestapelt sind

8

Wenn ich zwei divs habe (z-index ist nicht zugewiesen), einen Layer über den over, kann ich den Verweis auf das obere div verwenden, um herauszufinden, welches div darunter ist?

Soweit die DOM-Struktur geht, wären diese zwei divs Geschwister. aber visuell sind sie aufeinander gestapelt.

Hier ist ein Beispiel:

%Vor%

was dazu führt:

Also versuche ich herauszufinden, wann das schwarze div, box2, eine Möglichkeit hat, box1 in jquery zurückzugeben (Selektoren zu verwenden), weil box1 unter box2 ist und jquery verwendet.

    
tipu 08.04.2011, 17:58
quelle

4 Antworten

20

Überprüfen Sie, ob box1 dieselbe Position wie eine bestimmte Stelle auf der Seite hat.

Und nur weil ich ein bisschen gelangweilt bin, habe ich dieses super-er gemacht

Ссылка

%Vor%     
hunter 08.04.2011, 18:28
quelle
2

Vielleicht etwas in dieser Richtung ... entferne das Element unter deinem Cursor (in diesem Fall box1) und benutze document.elementFromPoint, um das nächste Element unterhalb dieser x, y-Position zu holen ... grobes Beispiel:

%Vor%     
Jake 08.04.2011 18:24
quelle
0

Soweit ich weiß, gibt es dafür keinen Selektor. Sie könnten wahrscheinlich eine Funktion schreiben, um dies zu tun. Ich würde über jedes Element, das dem fraglichen div vorausgeht, iterieren und prüfen, ob sich die Begrenzungsbox im gewünschten div befindet.

    
Aaron Hathaway 08.04.2011 18:16
quelle
0

Der einzige Weg, wie Sie es im Beispielfall haben, besteht darin, eine andere DIV-Schicht übereinander zu legen, wenn sie im DOM dahinter steht. Also, Ihre einfache Antwort ist, dass jedes Div über ein anderes div ist, wenn es danach in der DOM-Struktur kommt. Bitte geben Sie ein anschaulicheres Beispiel an, wenn dies nicht ausreicht.

Sie können veranschaulichen, dass dies funktioniert, indem Sie versuchen, DIV1 einen positiven Rand hinzuzufügen. Sie werden bemerken, dass es DIV2 nach unten kickt. DIV2 wird jedoch, wenn ein negativer Rand gegeben wird, über DIV1 "schichten". In Ihrem Szenario, das Margen und Divs ohne Z-Index oder andere Positionierungsmethoden verwendet, ist es für DIV1 nicht möglich, DIV2 zu überlappen.

BEARBEITEN basierend auf Kommentaren:

Der Prozess, herauszufinden, ob zwei Elemente denselben Raum einnehmen, ist ein anderes Spiel. Ein allgemeiner Ablauf Ihrer Methode wäre, die Koordinatenposition für Ihren Anker zu ermitteln und dessen Breite und Höhe zu ermitteln. Durchlaufen Sie dann alle Divs und prüfen Sie, ob die Position des Ankers mit einer seiner Koordinaten übereinstimmt. Wenn es mehrere divs überlappt, nehmen Sie das letzte im DOM, da es über dem anderen liegt.

Bitte zwing mich nicht, ein Codebeispiel zu schreiben. :)

    
Adam Terlson 08.04.2011 18:16
quelle

Tags und Links