k3nguruh
Erfahrenes Mitglied
Hallo,
Ich habe mir ein Selectbox Plugin programmiert. Es funktioniert auch soweit (fast) alles wie gewollt.
Mein Problem besteht darin, dass Verhalten der Seite zu steuern, wenn das Selectbox-Dropdown geöffnet ist. Nimmt man das Standard Select, kann man bei geöffneten Dropdown die Seite nicht scrollen. So soll es bei mir auch sein. Ich habe da auch etwas zusammengebaut, aber wenn man mit der Maus scrollt, "Zuckt" die Seite kurz, bleibt aber wie gewollt an der Stelle stehen. Aber vll gibt es ja eine andere / bessere Möglichkeit.
Hier mal der Code (nur das wichtigste zusammengestellt):
Sollt noch der HTML bzw. CSS - Code benötigt werden, kann ich den auch posten. Aber ich glaube das sollte reichen.
Vielen Dank fürs lesen und helfen....
Ich habe mir ein Selectbox Plugin programmiert. Es funktioniert auch soweit (fast) alles wie gewollt.
Mein Problem besteht darin, dass Verhalten der Seite zu steuern, wenn das Selectbox-Dropdown geöffnet ist. Nimmt man das Standard Select, kann man bei geöffneten Dropdown die Seite nicht scrollen. So soll es bei mir auch sein. Ich habe da auch etwas zusammengebaut, aber wenn man mit der Maus scrollt, "Zuckt" die Seite kurz, bleibt aber wie gewollt an der Stelle stehen. Aber vll gibt es ja eine andere / bessere Möglichkeit.
Hier mal der Code (nur das wichtigste zusammengestellt):
Javascript:
$(function () {
const $window = $(window);
const $wrapper = $("#selectbox");
const $toggle = $("#selectbox--toggle");
const $dropdown = $("#selectbox--dropdown");
let fixedScrollY;
//
// Events
// -------------
$window.on({ click: _outside, scroll: _fixed });
$toggle.on({ click: _toggle });
//
// Functions
// -------------
// Y-Position der Seite merken
// Dropdown ausblenden oder anzeigen
function _toggle() {
fixedScrollY = $window.scrollTop();
$dropdown[$dropdown.is(":visible") ? "hide" : "show"]();
}
// Bei Klick ausserhalb der Selectbox, das Dropdown schliessen
function _outside() {
if ($dropdown.is(":visible")) {
if (!$(event.target).closest($wrapper).length) {
$dropdown.hide();
}
}
}
// Bei geöffneten Dropdown das scrollen der Seite verhindern
function _fixed() {
if ($dropdown.is(":visible")) {
$window.scrollTop(fixedScrollY);
}
}
});
Sollt noch der HTML bzw. CSS - Code benötigt werden, kann ich den auch posten. Aber ich glaube das sollte reichen.
Vielen Dank fürs lesen und helfen....