如何集中到HTML元素(例如“a”),不要更改当前滚动设置。
例如。如果我使用:
- $('#link').focus();
并且此链接在屏幕中不可见(例如在可见区域下),浏览器向下滚动以显示元素。如何在没有滚动条移动的情况下设置焦点?我需要在原来的地方保持滚动条。
我试过这个,但它产生一些屏幕闪烁,这是一个黑客,而不是一个优雅的解决方案:
- var st=$(document).scrollTop();
- $('#link').focus();
- $(document).scrollTop(st);
有人可以帮助我吗?
解决方法
尝试这个:
- $.fn.focusWithoutScrolling = function(){
- var x = window.scrollX,y = window.scrollY;
- this.focus();
- window.scrollTo(x,y);
- return this; //chainability
- };
接着
- $('#link').focusWithoutScrolling();
编辑:
据报告,这不工作在IE10。可能的解决方案是使用:
- var x = $(document).scrollLeft(),y = $(document).scrollTop();
但我没有测试它。