javascript - 将浏览器位置聚焦在切换 block 上

标签 javascript jquery html css

我有几个 ul block 和按钮可以打开它们的内容。当我按下按钮时 - block 下降,其中包含所有内容,但屏幕保持聚焦。但是当我向下滚动到 block 底部并按下按钮将其切换回隐藏模式时 - 浏览器屏幕向下移动到浏览器底部并且不会返回到关闭 block 的顶部(如预期的那样)

$('.ul' + l).append('<button type="button" onclick="$(this).myFunc()">Button</button>');

           $.fn.myFunc = function () {
           var ul = $(this).parent().attr('class');
           $('.' + ul + ' li:gt(5)').fadeToggle("fast");
                        };

我尝试了一些 $(window).focus 东西,添加了 fadeToggle("fast").preventDefault() 等,但没有任何帮助。有什么想法吗?

最佳答案

完成所需操作的最简单方法是使用 native scrollIntoView() 方法:

document.querySelector('.ul' + l).scrollIntoView({ 
    behavior: 'smooth' 
});

这在 current versions 中得到支持所有主流浏览器,但如果您需要支持旧版浏览器(例如 IE 10 及以下版本),您可以使用此 polyfill .

根据下面的评论:您确实有一个 document 对象,我保证:document 是每个网页的基础。也就是说,如果需要,您可以改用 jQuery 选择器,但是您需要在使用 scrollIntoView 之前获取底层 DOM 对象(因为它不是 jQuery 方法。)

$('.ul' + l)[0].scrollIntoView({...});

关于javascript - 将浏览器位置聚焦在切换 block 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46564583/

相关文章:

javascript - 将表数据转换为xml结构格式?

javascript - 更改父元素时 CSS 过渡不起作用

javascript - 如何检查页面是否已被访问?

javascript - CSS 通过整个父行水平扩展内部元素边框

javascript - 使用 Javascript 的多线程请求

javascript - 选择一个选项后出现的jquery日期选择器

html - 如何为复杂网站定义标题标签层次结构

jquery - IE 无法从列表项触发器切换

javascript - 加入2个输入Jquery?

javascript - 奇怪的 iframe 加载 src 但在 firefox 和 safari 中显示空白