如何检测引导模态滚动条的位置
How to detect position of the Bootstrap modal scrollbar?
我正在使用JQuery和Bootstrap,我正在加载一个ajax请求的模态,所以内容将在模态内动态加载。
我设法加载更多的内容与一个按钮点击(也在模态),但我想实现一个无限滚动功能。
然而,window.onscroll
函数似乎没有工作或识别模态内的滚动位置,即使我在第一个ajax请求后在模态内定义它。
问题:如何检测模态中的特定元素是否对用户可见以自动加载更多内容?
其实我自己找到了正确的答案:
var modal_scrollTop = $('.modal-body').scrollTop();
var modal_scrollHeight = $('.modal-body').prop('scrollHeight');
var modal_innerHeight = $('.modal-body').innerHeight();
$('.modal-body').scroll(function() {
// Write to console log to debug:
console.warn('modal_scrollTop: ' + modal_scrollTop);
console.warn('modal_innerHeight: ' + modal_innerHeight);
console.warn('modal_scrollHeight: ' + modal_scrollHeight);
// Bottom reached:
if (modal_scrollTop + modal_innerHeight >= (modal_scrollHeight - 100)) {
alert('reached bottom');
}
});
应该可以了
const $modal = $("#myModal")
const $bookList = $modal.find('.media-list')
$modal.scroll(e => {
const $middleBook = $bookList.find('.media').eq(BOOKS_CHUNK_SIZE / 2)
const middleBookInViewport = $(window).height() > $middleBook.offset().top;
if(bookChunks.length && middleBookInViewport){
$bookList.append(bookChunks.shift().map(bookTemplate))
}
})
jsFiddle
这将适用于Bootstrap 4.7,它将触发一个控制台日志命令,距离模态主体底部100px。
$('.modal-body').bind('scroll', chk_scroll);
function chk_scroll(e) {
var elem = $(e.currentTarget), offsetHeight = 100;
if (elem[0].scrollHeight - elem.scrollTop() - elem.outerHeight() <= offsetHeight) {
console.log('Near the bottom')
}
}
相关文章:
- 自举模态力滚动到顶部
- 使用媒体查询在较小的屏幕上仅滚动模态的距离
- 在哪里可以找到类似于Pinterest的可滚动模态框的模态窗口/框
- 平滑滚动 JavaScript 影响模态功能
- 引导 - 模态有时会中断滚动
- 仅在模态上禁用/启用滚动
- 滚动以隐藏Javascript模态
- 在哪里可以找到jQuery“;可滚动的“;模态窗口插件
- 如何检测引导模态滚动条的位置
- 我怎么能阻止我的引导模态按钮从滚动页面
- 如何在javascript中滚动到模态窗口的顶部
- 如何在iPad上禁用模态蒙版后面的滚动
- Javascript模态窗口需要向下滚动才能看到
- 在模态窗口中实现可滚动选项卡
- 如何使用jquery滚动到模态中的元素
- 我怎样才能确保jQuery加载的可滚动模态内容总是滚动回顶部
- jquery模态防止滚动和防止移动回到页面顶部的模态打开
- 如何使一个引导模态与可滚动的内容和最大高度
- 在jquery UI模态对话框上使用浏览器默认滚动条
- 只有当滚动条位于顶部时,模态弹出框才显示在中心