我在我的 html 表格上使用无限滚动。这是我用来无限滚动的代码
$('#divTable').bind('scroll', function () {
if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) {
currentPageNo = currentPageNo + 1;
myservice(id, pageSize, currentPageNo);
}
});
当页面加载时,它会用 100 条记录填充我的表格,因为我将 pagesize 传递为 100。当我在表格底部向下滚动时,它会调用此代码 myservice(id, pageSize, currentPageNo);
两次。我不明白为什么它会调用两次。
这是我的html
<div id="divTable" style="height: 535px;overflow-y: auto;overflow-x: hidden">
<table>
<tbody data-bind="foreach: myData">
<tr >
<td style="padding: 8px;width: 50px;" data-bind="text: Id "></td>
</tr>
</tbody>
</table>
</div>
最佳答案
当我试图劫持滚动事件并使用它允许我的用户一次前进一页时,我遇到了类似的问题。在触控板上,您可以使用我所说的“intertial scrolling”,这会导致您的事件处理程序触发太多次。
您需要能够识别惯性滚动,并且仅当滚动不是惯性滚动时才运行您的事件处理程序。
这是一个代码片段:
var event = normalizeEvent(event);
if(event.timeStamp - smartScroll.timeStamp < 50){
smartScroll.inertia = true;
}else{
smartScroll.inertia = false;
}
根据 smartScroll.inertia 的值,您可以确定事件处理程序是否应该使用react。
你可以在这里挑选出完整的代码,虽然这里有很多不属于你的情况: http://www.oliverpetkovski.com/javascript/main.js
关于jquery - wcf 服务被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26810559/