【发布时间】:2011-11-03 17:07:10
【问题描述】:
<script type="text/javascript">
function pageLoad() {
var $scrollingDiv = $("#scrollfix");
$(window).scroll(function () {
if ($(window).scrollTop() == $(document).height() - $(window).height()) {
__doPostBack('<%= GetMoreResults.UniqueID %>', '');
}
$scrollingDiv
.stop()
.animate({ "marginTop": ($(window).scrollTop()) + -60 + "px" }, "slow");
});
}
</script>
这段代码根本不执行,我使用pageLoad函数的原因是jquery代码在updatepanel部分回发后执行失败。 但是在使用这个之后,上面的代码即使在第一页启动时也不起作用。
然而,用于页面加载的代码如下,但 jquery 部分在回发后停止工作:
$(document).ready(function () {
$().ready(function () {
var $scrollingDiv = $("#scrollfix");
$(window).scroll(function () {
if ($(window).scrollTop() == $(document).height() - $(window).height()) {
__doPostBack('<%= GetMoreResults.UniqueID %>', '');
}
$scrollingDiv
.stop()
.animate({ "marginTop": ($(window).scrollTop()) + -60 + "px" }, "slow");
});
});
});
解决方案?非常感谢。
更新 #2
这是我当前的代码: 它在页面第一次加载时起作用,但在 __doPostBack 触发部分回发之后就不起作用了。
<script type="text/javascript">
window.load = pageLoad();
function pageLoad() {
var $scrollingDiv = $("#scrollfix");
$(window).scroll(function () {
if ($(window).scrollTop() == $(document).height() - $(window).height()) {
__doPostBack('<%= GetMoreResults.UniqueID %>', '');
}
$scrollingDiv
.stop()
.animate({ "marginTop": eval($(window).scrollTop()) + -60 + "px" }, "slow");
});
}
</script>
更新 #3
我应该提到这个页面不是从 Page 继承的,我已经制作了一个名为 BasePage 的自定义页面类:Page。
也许 pageLoad() 由于与此相关的某种原因没有触发?
【问题讨论】:
-
你会在任何地方调用 pageLoad() 吗?
-
可以去掉 $().ready(function () {
-
更具体地说,什么不起作用,你能在 .scroll 函数中发出警报吗?
-
pageLoad() 如果您使用的是 ASP.NET ajax,则会自动调用。
标签: javascript jquery asp.net ajax updatepanel