gpt4 book ai didi

javascript - 在无限循环风格的展示中预加载相邻条目

转载 作者:行者123 更新时间:2023-11-28 02:09:21 25 4
gpt4 key购买 nike

我正在制作一个作品集,您首先会看到每个项目的缩略图。单击缩略图时,将加载并显示内容。

现在,对于此内容加载,我决定跳过 ajax 并将所需的所有信息放入 javascript 变量中,以便在获取内容时我只需使用 jquery 创建一个容器,并用变量中提供的信息填充它,然后显示该信息给访客。到目前为止一切顺利。

我希望能够工作的是,当访问者加载项目时,它应该同时在屏幕外与相邻项目一起创建容器。例如,如果访问者单击项目编号 3,则应加载项目 1 和 2(位于屏幕左侧)以及项目 4 和 5(位于屏幕右侧)。当访问者看完作品后,他或她应该能够单击上一个或下一个,该特定项目就会在屏幕上滑动。

一段时间以来,我一直在研究如何构建最有效的结构,但我似乎不知道该怎么做。最让我烦恼的是如何弄清楚如果访问者直接进入项目 1 并决定单击上一个,如何为最后一个项目提供服务?

项目:
1 2 3 4 5 6 7 8 9 10

粗体代表单击的项目,斜体代表应该加载哪些项目。正如您所理解的,例如,如果在这种情况下单击“下一步”,则 2 会变为事件状态,并且应该加载/创建项目 4。

创建容器后,它看起来像这样:

<div id="projects">
<article class="curr" data-order="1" id="project1">
Content
</article>
</div>

这个想法是在 #projects 之前/追加带有类 .prev/.next 的新项目

我从中获取数据的变量如下所示:

var works = {
"work":{
"1":{"id":101,"name":"project-1","title":"Project 1","content":"Text"},
"2":{"id":201,"name":"project-2","title":"Project 2","content":"Text"},
"3":{"id":301,"name":"project-3","title":"Project 3","content":"Text"},
"4":{"id":401,"name":"project-4","title":"Project 4","content":"Text"},
"5":{"id":501,"name":"project-5","title":"Project 5","content":"Text"},
"6":{"id":601,"name":"project-6","title":"Project 6","content":"Text"},
"7":{"id":701,"name":"project-7","title":"Project 7","content":"Text"},
"8":{"id":801,"name":"project-8","title":"Project 8","content":"Text"},
"9":{"id":901,"name":"project-9","title":"Project 9","content":"Text"},
"10":{"id":1001,"name":"project-10","title":"Project 10","content":"Text"},

}
}

“1”、“2”等表示项目的显示顺序。除此之外,我将项目总数放在一个单独的变量中。但除此之外,如何以最有效的方式解决这个问题现在是我无法理解的。

想法?

最佳答案

如果您的问题是找出当用户打开项目 project_idx 时应加载哪些项目,那么您可以尝试此操作

function next(idx) {
return (idx + 1) % project_count;
}
function prev(idx) {
return (idx + (project_count - 1)) % project_count;
}

function adjacent(project_idx) {
return {
"prev": [prev(prev(project_idx)), prev(project_idx)],
"next": [next(project_idx), next(next(project_idx))]
};
}

// assuming project_count = 10 and projects are indexed starting 0
adjacent(0); // -> {prev:[8,9], next:[1,2]}
adjacent(9); // -> {prev:[7,8], next:[0,1]}
adjacent(4); // -> {prev:[2,3], next:[5,6]}

关于javascript - 在无限循环风格的展示中预加载相邻条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com