Javascript jQuery-每个计数重置问题
我正在尝试使用jQuery-each函数获取当前页码。我就是这样做的Javascript jQuery-每个计数重置问题,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试使用jQuery-each函数获取当前页码。我就是这样做的 var CurrentPageView = 1; var check = true; var Bookmark = []; var CurPage = 1; $(function() { $(window).scroll(function() { if (check) { var PagesPosition = []; var CurrentWindowP
var CurrentPageView = 1;
var check = true;
var Bookmark = [];
var CurPage = 1;
$(function() {
$(window).scroll(function() {
if (check) {
var PagesPosition = [];
var CurrentWindowPosition = $(window).scrollTop();
var CurrentCenterWindowPos = CurrentWindowPosition + $(window).height() / 2;
$(".Page").each(function() {
var PagePos = $(this).offset().top;
if (PagePos / CurrentCenterWindowPos <= 1) {
CurPage = $(this).index() + 1;
}
});
$(".CurrPageNumber").val(CurPage);
CurrentPageView = CurPage;
}
});
});
是的
1
2
3
4
尝试使用
.Page
列表中的索引,而不是其父项中的索引:
$(".Page").each(function(i) {
var PagePos = $(this).offset().top;
if (PagePos / CurrentCenterWindowPos <= 1) {
CurPage = i + 1; // Use the index in the array.
}
});
$(".CurrPageNumber").val(CurPage);
CurrentPageView = CurPage;
$(“.Page”)。每个(函数(i){
var PagePos=$(this).offset().top;
if(PagePos/CurrentCenterWindowPos)它可能工作得很好,但它非常贪婪。每次窗口滚动1个像素,脚本都会构建一个$(窗口)
对象,然后浏览整个dom以查找”。Page“
”,然后构建一个$(“.Page”)
对象数组。对于$(“.CurrPageNumber”)也是如此
。您确实应该在.scroll()
之前缓存所有这些变量并重用它们:var$Pages=$(“.Page”)
然后$Pages.forEach()
。巨大的性能改进。你是什么意思为什么要构建整个网站?
@JeremyThille谢谢你的建议,我已经注意到一个小的性能改进。这些时候我认为“这是一个多么简单和明显的解决方案”。非常感谢你的帮助,它工作得非常好。
$(".Page").each(function(i) {
var PagePos = $(this).offset().top;
if (PagePos / CurrentCenterWindowPos <= 1) {
CurPage = i + 1; // Use the index in the array.
}
});
$(".CurrPageNumber").val(CurPage);
CurrentPageView = CurPage;