使用jQuery查找离滚动位置最近的HTML片段标识符

Finding nearest HTML fragment identifier to scroll position with jQuery

本文关键字:HTML 片段 标识符 最近 位置 jQuery 查找 滚动 使用      更新时间:2023-09-26

如何根据窗口的当前滚动位置找到最近的HTML片段标识符(hashtag href)?

我想通过JS/jQuery制作一个书签功能,捕捉用户点击书签按钮时所在的最近部分。我没有访问后端的权限,所以我不能添加任何挂钩/隐藏字段,但这并不重要,因为片段ID是我的挂钩。

我认为jQuery的.scroll()处理程序可能有用,但我不确定如何定位"给定滚动位置的DOM内容",以了解是否出现了新的标识符。或者如果这是最好的方法。。。

想法?

类似的东西:

$('a [href]').filter(function() {
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();
    var elemTop = $(this).offset().top;
    var elemBottom = elemTop + $(this).height();
    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
})
.first();

虽然在技术上不能回答我最初的问题,但这是我决定使用的更灵活的解决方案:

当用户点击"书签"时,jQuery将存储页面url,并在pos=X上添加一个虚查询字符串,其中X是$('body').scrollTop()的当前值。

当用户想要重新访问他的书签时,将加载存储的URL,插入的jQuery将检索pos值并将页面滚动到书签位置。

这是理想的,因为它确实把用户放回了他/她停止的地方,一直到像素。

我很不理解你的问题,但要使用jquery在滚动上做一些事情,你可以试试这个。

$(document).ready(function(){
    $(window).scroll(function(){
        if ($(window).scrollTop() > 100){
            /*you check if identifier has appeared here*/
        }
    });
});