【发布时间】:2021-11-24 13:30:26
【问题描述】:
我正在使用带有 ASP.NET Core Razor 页面和 Bootstrap 4 应用程序的 jQuery.Lazy() 插件通过 AJAX 从数据库中检索 2 个列表(见图)。一切都很好,除了一件事:在移动设备上,我不知道如何延迟Content Data 2 List 的检索/显示,直到用户在浏览器中向下滚动到足够远以使Title 2/content 在他们的视图中港口。桌面上不存在此问题(因为列表并排显示并且都需要检索),但在移动设备上,如果用户从不向下滚动,我不想检索Content Data 2 List足以看到它。
当页面首次加载时,两个标题都将与一个带有微调器的小数据区域一起显示。使用 AJAX,我检索数据,隐藏微调器,然后在其位置显示检索到的数据。我过度简化的 HTML 是:
<div class="col-sm-12 col-lg-6 lazy" data-loader="lazyAJAX1">
<div class="col">
<label class="">Title 1</label>
</div>
<div class="col">
<div class="">
<div class="lp-spinner mt-4 mb-4">
</div>
</div>
<div id="Content1List" class="col-12">
</div>
</div>
</div>
<div class="col-sm-12 col-lg-6 lazy" data-loader="lazyAJAX2">
<div class="col">
<label class="">Title 2</label>
</div>
<div class="col">
<div class="">
<div class="lp-spinner mt-4 mb-4">
</div>
</div>
<div id="Content2List" class="col-12">
</div>
</div>
</div>
而相关的JQuery是:
$(".lazy").Lazy({
scrollDirection: 'vertical',
effect: 'fadeIn',
visibleOnly: true,
bind: 'event',
threshold: 0,
lazyAJAX1: function () {
loadAJAX1Partial();
},
lazyAJAX2: function () {
loadAJAX2Partial();
}
});
玩了一段时间后,我相信问题出在数据加载器上。具体来说,data-loader="lazyAJAX2" 因为它最初在页面加载时显示在用户的视口中,因此会自动检索Content Data 2 List。我想要的是 Lazy() 首先检索 Content Data 1 List (这会将 Title 2 内容向下推送并移出用户的视口),然后为 Content Data 2 List 启用/激活 Lazy() 以便当用户滚动时向下到达Title 2,Content Data 2 List 将被检索。我希望这是有道理的。
我正在考虑使用 addClass() 来尝试解决这个问题,但也许有更多 .Lazy() 经验的人对如何做到这一点有更好的想法。
提前感谢您的任何建议/帮助... :)
【问题讨论】:
标签: jquery asp.net lazy-loading asp.net-ajax razor-pages