jQuery 焦点不滚动

标签 jquery focus scrollbar scroll

如何将焦点集中到 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();

但我还没有测试过。

关于jQuery 焦点不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4898203/

相关文章:

jQuery - 使用替换 div 选择/取消选择多选选项

html - Opera Mini 链接大纲问题

java - JTextField 除非单击否则不会获得焦点

javascript - js .off() 不适用于 <tr> 元素

javascript - 在选中复选框之前禁用 jQuery OnClick 事件?

javascript - 当 # 已经添加到 url 时,如何使用 javascript 或 jquery 将焦点设置在 div 上?

html - ionic 2 : Hide scroll-bar and keep scrolling

c++ - 计算具有不同行高的网格中的滚动条高度

ios - jquery 移动数据角色页面或内容中的奇怪滚动

javascript - jQuery AJAX 请求事件 - 完成、失败、成功