私はjqueryを介してdivに単純な「ビューポート内に留まる」動作を実装しようとしています。そのために、関数をウィンドウのスクロールイベントにバインドする必要がありますが、起動させることができないようです。何も起こりません。私は単純なalert()、console.log()をサイコロなしで試しました。私が間違っていることのアイデアは?
このコード:
$(window).scroll(function () {
console.log("scrolling");
});
htmlファイルの一番下にあるscript.jsにあります
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script src="js/script.js"></script>
</body>
</html>
[〜#〜] update [〜#〜]テストURL: http://pixeline.eu/test/menu.php
あなたのCSSは実際にドキュメントの残りをオーバーフローを表示しないように設定しているため、ドキュメント自体はスクロールしていません。これに対する最も簡単な修正は、イベントをスクロールしているものにバインドすることです。これはあなたの場合はdiv#page
。
簡単に変更できます:
$(document).scroll(function() { // OR $(window).scroll(function() {
didScroll = true;
});
に
$('div#page').scroll(function() {
didScroll = true;
});
私の問題は、CSSにこのコードがあったことでした
html,
body {
height: 100%;
width: 100%;
overflow: auto;
}
削除すると、ウィンドウのスクロールイベントが再び発生しました
$('#div').scroll(function () {
if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight-1) {
//fire your event
}
}
あなたが試したものに関係なく(私のように)働いていない人:<element onscroll="myFunction()"></element>
は魅力のように機能します
w3の学校で説明されているとおり https://www.w3schools.com/tags/ev_onscroll.asp
解決策は次のとおりです。
$('body').scroll(function(e){
console.log(e);
});
何もうまくいかないように見えたが、これはトリックをやった
$(parent.window.document).scroll(function() {
alert("bottom!");
});