我的SharePoint页面生成了这个HTML(已剪辑):
<body scroll="yes" onload="if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();" class="v4master" style="overflow: scroll" spellcheck="false">
<form name="aspnetForm" method="post" action="/Lists/List/EditNewForm.aspx?ID=2&Source=https%3A%2F%2Fsp2010-test%2Eatwss%2Ecom%2FLists%2FList%2FAllItems%2Easpx" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm" style="overflow: scroll">
// some html here
<div id="competenceTotalSum" style="position: absolute; left: 500px; top: 400px; width: 100px; height: 50px; background-color:gray" />
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("form#aspnetForm").bind("scroll", function(e){
alert("scroll");
$("#competenceTotalSum").css("top", $(this).scrollTop() + 400);
});
});
</script>
// some html here
</form>
</body>
事件scroll
未触发。我更改了scroll
的{{1}}属性,body
和body
的溢出属性,尝试将form
事件绑定到不同的对象(scroll
,{ {1}},window
)。将body
事件更改为form
事件时,它会触发。除了滚动元素的scroll
属性之外,我没有找到任何理由。
答案 0 :(得分:19)
这是一个古老的问题,但这可能对其他人有帮助,我想在我的一个共享点项目中实现滚动到顶部功能。
几个小时后我的脑袋被打破了。我得到了以下代码。
实际上$(window).scroll()
不会在共享点触发,我使用了('#s4-workspace')
的主ID来使其正常工作。
$(document).ready(function () {
var offset = 220;
var duration = 1000;
jQuery('#s4-workspace').scroll(function() {
if (jQuery(this).scrollTop() > offset) {
jQuery('.arrowToTop').fadeIn(duration);
} else {
jQuery('.arrowToTop').fadeOut(duration);
}
});
jQuery('.arrowToTop a').click(function(event) {
event.preventDefault();
jQuery('#s4-workspace').animate({scrollTop: 0}, duration);
return false;
}) });
我使用了以下CSS样式
.arrowToTop {
display: none;
height: 100%;
position: fixed;
right: 20px;
z-index: 9999;
bottom: 0;
width: 70px;
height:70px;
}
.arrowToTop a{
width: 70px;
height:70px;
display: block;
background: url(../images/arrow.png) no-repeat left 0;
}
答案 1 :(得分:0)
正如我现在看到的那样,表单#aspnetForm甚至不应该有一个工作滚动条,对吗?
overflow: scroll
仅与height
或max-height
一起使用。 (另外,我会将overflow: scroll
替换为overflow: auto
,因此您只显示实际需要显示的滚动条,这很可能是垂直滚动条。
如果要跟踪整个文档的滚动,请将代码更改为
$("body").on("scroll", function(e){
alert("scroll");
$("#competenceTotalSum").css("top", $(this).scrollTop() + 400);
});
答案 2 :(得分:0)
检查以下代码,看看它是否可以帮到您。我增加了身高。
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body scroll="yes" onload="if (typeof(_spBodyOnLoadWrapper) != 'undefined') _spBodyOnLoadWrapper();" style="overflow: scroll" class="v4master" spellcheck="false">
<form name="aspnetForm" method="post" style="height:100px;overflow: scroll" action="/Lists/List/EditNewForm.aspx?ID=2&Source=https%3A%2F%2Fsp2010-test%2Eatwss%2Ecom%2FLists%2FList%2FAllItems%2Easpx"
onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm" >
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br><br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
// some html here<br>
<div id="competenceTotalSum" style="position: absolute; left: 500px; top: 400px; width: 100px; height: 50px; background-color:gray" >asdsa</div>
<script type="text/javascript">
$(function(){
$("form#aspnetForm").bind("scroll", function(e){
alert("scroll");
$("#competenceTotalSum").css("top", $(this).scrollTop() + 400);
});
});
</script>
// some html here
</form>
</body>