Es scheint, dass die Auswahl von jQuery :visible
für einige Inline-Elemente in Chrome nicht funktioniert. Die Lösung besteht darin, einen Anzeigestil hinzuzufügen, der "block"
oder "inline-block"
funktioniert.
Beachten Sie auch, dass jQuery eine etwas andere Definition dessen hat, was sichtbar ist als viele Entwickler:
Elemente gelten als sichtbar, wenn sie Speicherplatz im Dokument belegen.
Sichtbare Elemente haben eine Breite oder Höhe, die größer als Null ist.
Mit anderen Worten, ein Element muss eine Breite und Höhe ungleich Null haben, um Platz zu beanspruchen und sichtbar zu sein.
Elemente mit visibility: hidden
oder opacity: 0
werden als sichtbar betrachtet, da sie noch Platz im Layout beanspruchen.
Auf der anderen Seite visibility
ist jQuery hidden
immer noch :visible
für jQuery, da es Speicherplatz verbraucht , selbst wenn es auf Null gesetzt ist oder die Deckkraft Null ist. Dies kann verwirrend sein, wenn das CSS ausdrücklich angibt, dass seine Sichtbarkeit verborgen ist.
Elemente, die sich nicht in einem Dokument befinden, werden als ausgeblendet betrachtet. jQuery kann nicht feststellen, ob sie beim Anhängen an ein Dokument sichtbar sind, da dies von den jeweiligen Stilen abhängt.
Alle Optionselemente werden unabhängig von ihrem ausgewählten Status als ausgeblendet betrachtet.
Bei Animationen, bei denen ein Element ausgeblendet wird, wird das Element bis zum Ende der Animation als sichtbar betrachtet. Während Animationen ein Element anzeigen, wird das Element zu Beginn der Animation als sichtbar betrachtet.
Die einfache Möglichkeit, es zu betrachten, besteht darin, dass wenn Sie das Element auf dem Bildschirm sehen können, auch wenn Sie seinen Inhalt nicht sehen können, es transparent usw. ist, es sichtbar ist, dh Platz beansprucht.
Ich habe Ihr Markup ein wenig aufgeräumt und einen Anzeigestil hinzugefügt ( dh die Elementanzeige auf "Blockieren" usw. setzen ), und das funktioniert für mich:
GEIGE
Offizielle API-Referenz für :visible
Ab jQuery 3 hat sich die Definition von :visible
leicht geändert
jQuery 3 ändert die Bedeutung von :visible
(und daher von
:hidden
) geringfügig .
Ab dieser Version werden Elemente berücksichtigt,
:visible
wenn sie Layoutfelder haben, einschließlich solcher mit einer Breite und / oder Höhe von Null. Beispielsweise werden br
Elemente und Inline-Elemente ohne Inhalt von der Auswahl ausgewählt :visible
.