私は、ボックスがスクロールダウンしている間にいくつかのヘッダーを隠し、スクロールアップするときにヘッダーを表示する機能を持っています。それは正常に動作しますが、マウスホイールやタッチパッドではなくページをスクロールし、スクロールバーのマウスボタンを使用するとイベントが繰り返されます。ドラッグするとゆっくりとスクロールし、ヘッダーは非表示になり、バーをドラッグしてスクロールすると.scroll()関数が実行されないようにするにはどうすればいいですか?
マウスボタンを押している間に一度実行された後にイベントハンドラを停止する方法があるかどうか知りたいですか?
ありがとうございました。
マイコード:
const throttleHidings = _.throttle(headerHidings, 400);
$(".data-table").scroll(throttleHidings);
function headerHidings() {
const element = $(".hiding-part"),
t = "transparent";
let scrollPosition = $(".data-table").scrollTop();
if (scrollPosition - contentScrollPosition > 0) {
scrollingDown = true;
lastPos.bottom = scrollPosition;
contentScrollPosition = scrollPosition;
}
if (scrollPosition - contentScrollPosition < 0) {
scrollingDown = false;
contentScrollPosition = scrollPosition;
lastPos.top = scrollPosition;
}
if (scrollingDown) {
hiding(scrollPosition - lastPos.top);
} else {
showing(lastPos.bottom - scrollPosition);
}
function hiding(pos) {
if (pos > 100) {
$table.height("calc(100% - 133px)");
element.slideUp(150);
}
}
function showing(pos) {
if (pos > 50) {
element.slideDown(150,() => $table.height("calc(100% - 340px)"));
}
}
}
あなたのコードは何ですか? – epascarello