【问题标题】:JQuery scroll event doesn't fire immediately after postback回发后 JQuery 滚动事件不会立即触发
【发布时间】:2018-08-09 04:09:02
【问题描述】:

我有一个 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()">

【问题讨论】:

  • 尝试在页面加载时立即调用该函数
  • 这似乎行得通!非常感谢,但我不明白 document.ready 和 onload 之间的区别
  • 是异步回发吗?
  • 这是一个同步回发

标签: javascript jquery asp.net


【解决方案1】:

问题是这个

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

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

所以你必须手动调用fixedNav(),重新应用新的类。


我认为这与您的问题无关,但谷歌“document.ready vs onload”可以找到b/t ready和onload差异的答案。 (如果你想比较两个东西,谷歌搜索时总是使用vs

这是一个很好的答案: ready vs onload

【讨论】:

  • 这很有意义。实际上,了解出了什么问题总是比仅仅解决问题要好。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-08-06
  • 2014-08-28
  • 2014-09-18
  • 2019-04-10
  • 2015-04-09
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
相关资源
最近更新 更多