получить максимальное значение вертикальной прокрутки с помощью jquery - PullRequest
11 голосов
/ 17 мая 2011

Это мой код просмотра, я использовал jquery, он работает, и у меня не было никаких проблем, пока я не изменил разрешение экрана, он перестает работать.Я знаю, где проблема, но я не могу ее решить, посмотрите на код:

    @model PNUBOOKIR.Models.ProductModels
@{
    Layout = null;           
}

<!DOCTYPE html>
<html>
<head>

<title>Index</title>
<script src="@Url.Content("~/Scripts/jquery.js")" type="text/javascript"></script>    
<script type="text/javascript">
    var endRun = false;
    var PageNO = 1;
    $(window).scroll(function () {
        if ((($("#container").outerHeight() - 796) == ($(this).scrollTop())) && (!endRun)) {
            endRun = true;
            Load();
        }
    });

    $(document).ready(function () {
        Load();
        return false;
    });

    function Load() {
        var BtnShowMore = document.getElementById("BtnShowMore");
        BtnShowMore.innerHTML = "Loading...";
        $.ajax({ type: "Post",
            url: "Product" + "/" + "GetHomeEventAjax",
            data: "{" + "PageNO" + ":" + PageNO + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function succ(data, states) {
                if (states == "success") {
                    if (data.Content != null) {
                        var EventListArea = document.getElementById("result");
                        $('#result > tbody:last').append(data.Content);
                        PageNO = PageNO + 50;
                        BtnShowMore.innerHTML = "More";
                        endRun = false;
                    }
                    else BtnShowMore.innerHTML = "Loading is complete";
                }
            },
            error: function err(result) { alert(result.responseText); }
        });
    }        
</script>
</head>
<body>
    <div id="container">
        <table cellpadding="4" cellspacing="2" border="1" style="width: 450px; direction: rtl;"
            id="result">
            <tbody>
                <tr>
                    <th>کد کالا</th>
                    <th>نام کتاب</th>
                    <th>ناشر</th>
                </tr>
            </tbody>
        </table>
        <a style="width: 200px" id="BtnShowMore">
            Load</a>
    </div>
</body>
</html>

В сценарии события прокрутки мне нужно выяснить, каково максимальное значение вертикальной прокрутки, чтобы я получил контейнерexternal-Height, но это не совсем максимальное значение, оно на 796 пикселей больше, чем в разрешении экрана 1280x1024, оно может отличаться в зависимости от разрешения экрана.Мне нужна помощь, что должно быть вместо номера "796".

Ответы [ 3 ]

35 голосов
/ 17 февраля 2013

Отправленный ответ неверен; максимальное значение scrollTop это не scrollHeight, это scrollHeight - outerHeight.


Это даст вам правильное значение:

var elem = $("#container");
var maxScrollTop = elem[0].scrollHeight - elem.outerHeight();
10 голосов
/ 17 мая 2011

Попробуйте:

$("#container").attr({ scrollTop: $("#container").attr("scrollHeight") });

Начиная с JQuery 1.9.1, вам потребуется:

$("#container").scrollTop($("#container").prop("scrollHeight"));
3 голосов
/ 20 марта 2012

Лучший способ сделать это без jQuery.

document.getElementById('container').scrollTop = document.getElementById('container').scrollHeight;

, используя jQuery, у меня это не сработало, поэтому попробуйте этот, если возникли проблемы с выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...