javascript - JQuery 滚动事件在回发后不会立即触发

标签 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()">

最佳答案

问题是这个

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

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

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

<小时/>

我认为这与您的问题无关,但请搜索“document.ready vs onload”以获取 b/t ready 和 onload 差异的答案。 (如果您想比较两个事物,请在谷歌搜索时始终使用 vs

这是一个这样的答案: ready vs onload

关于javascript - JQuery 滚动事件在回发后不会立即触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751448/

相关文章:

javascript - Jquery:如何关注DIV的最后一个字符

javascript - 如何使 Ul-LI 菜单灵活?

javascript - 将错误消息应用于文本框

jQuery 验证 - 只显示一条错误消息

java - 如何重置 Eclipse 工作区的 View

javascript - 创建表dom宽度jquery

javascript - 从 jQuery .each() 中的 javascript 对象中删除它

c# - 如何在 ASP.NET Web API Core 应用程序上使用 QUARTZ 实现调度程序?

asp.net - 写入包含公式的 Excel 文件非常慢

c# - 使用 OpenID 实现成员(member)系统