0

ユーザーがウィンドウの下部から 500px のときにクリックを発生させるこの関数があります。

css で html と body を height:100% に設定した場合を除いて、すべて正常に動作します。

これが「作業」スクリプトです。

$(document).ready(function() {
    var timeout = '';
    $(window).scroll(function (e) { 
        var intBottomMargin = 500; 
        clearTimeout(timeout);
        //if less than intBottomMargin px from bottom 
        if ($(window).scrollTop() >= $(document).height() - $(window).height() - intBottomMargin) {
          timeout = setTimeout(function(){ 
                $("#next-paginav")[0].click(); 
          }, 300);
        }
    });
});

HTML と本文の高さが 100% の場合、同じスクリプトを機能させるにはどうすればよいですか?

やることは本当に簡単だと思います。

4

2 に答える 2

0

あなたの計算は間違っていると思います:

if ($(window).scrollTop() >= $(document).height() - $(window).height() - intBottomMargin)

body/html の高さが 100% の場合は、それをビューポートの高さに設定していることを意味します。以前にフローティング要素がありましたか? それがあなたの(以前の)高さの計算が機能していた理由かもしれません

代わりにこれを試してください:

if ($(window).scrollTop() >= $(document).height() - intBottomMargin)
于 2013-04-02T22:35:16.833 に答える
-1

あなたがスクロールしているのはそれwindow以降bodyではなく、htmlウィンドウと同じサイズに設定されているため、ウィンドウにはスクロールバーを必要とするオーバーフローがありません

オーバーフロー コンテンツがあるため、スクロールバーは本文の一部です。scoll ハンドラーを本体にバインドすると機能します

 var $scollEl=$('body').scroll(function (e) { 
        var intBottomMargin = 500; 
        clearTimeout(timeout);
        //if less than intBottomMargin px from bottom 

        if ($scollEl.scrollTop() >= $(document).height() - $scollEl.height() - intBottomMargin) {
          timeout = setTimeout(function(){ 
                $(".clicked").click(); 
          }, 300);
        }
    });
});

デモ: http://jsfiddle.net/LnmsR/2/

于 2013-04-02T23:12:39.640 に答える