回传后,jQuery滚动事件不会立即触发

时间:2018-08-08 16:23:39

标签: javascript jquery asp.net

在滚动到原始位置以下之后,我有一个jQuery函数可将div粘贴到页面顶部。但是,单击按钮(回发)后,必须先在div上方滚动才能再次使用。

我认为这可能是麻烦制造者:

MaintainScrollPositionOnPostback="true"

我的jQuery:

$(document).ready(function () {
function fixedNav() {
    if ($(window).scrollTop() > 150) {
        $('#navigation').addClass('fixedNav');
        $('#mainContent').addClass('pushedMainContent');
    }
    else {
        $('#navigation').removeClass('fixedNav');
        $('#mainContent').removeClass('pushedMainContent');
    }
}
function isPostBack() {
    fixedNav();
}
$(window).scroll(function () {
    fixedNav();
})
})

我已经检查了一个小时的功能,但似乎找不到解决方法。 (我什至在isPostBack中添加了相同的功能,但这没有帮助。)任何帮助/建议都值得赞赏。

修正:(谢谢@charlietfl)

<script>see "My jQuery"</script>
<body onload="fixedNav()">

1 个答案:

答案 0 :(得分:1)

问题是这个

$(window).scroll(function() {
    fixedNav();
})

创建一个当有人滚动时要调用的函数,但是当页面重新加载时,没有人在滚动。 并且,如果我没记错的话,页面将加载标记中的类,而不是最后应用的类。

因此,您必须手动调用fixedNav(),以重新应用新类。


我认为这与您的问题无关,但可以通过Google'document.ready vs onload'来了解b / t ready和onload的区别。 (如果要比较两件事,则在谷歌搜索时始终使用vs

这是一个SO答案: ready vs onload