如何通过关注文档来模糊一切?

时间:2010-04-02 20:17:23

标签: javascript jquery

使用Jquery / javascript

是:$(document).focus()?

4 个答案:

答案 0 :(得分:34)

如果函数作为第一个参数传递,则jQuery包装元素上的.focus()方法将绑定到onfocus事件,或者触发没有参数的附加事件处理程序。

我不确定你为什么要尝试做你想要做的事情,但是如果你想模糊当前活动的元素,无论它是什么元素,你都可以使用:

if ("activeElement" in document)
    document.activeElement.blur();

不建议这样做,因为这样做会重置标签顺序,并可能会惹恼键盘导航用户。

答案 1 :(得分:1)

$().method()将触发与该方法关联的侦听器。如果需要在dom元素上调用函数,请为jQuery对象编制索引。

$(document)[0].focus()

虽然为什么你不仅仅使用document.focus可能是一个值得回答的问题。

答案 2 :(得分:1)

可接受的答案在TypeScript中不起作用,因为document.activeElementElement类型,而不是HTMLElement,因此从技术上讲它不支持blur()。下面的方法有点怪异,但可以正常工作。

改编自this answer

const tmp = document.createElement('input');
document.body.appendChild(tmp);
tmp.focus();
document.body.removeChild();

答案 3 :(得分:0)

如果目标是消除对任何表单字段元素的关注,则可以使用以下方法:

$(':focus').blur();

如果没有jQuery,则可以使用纯JavaScript:

let elem = document.querySelector(':focus');
if(elem ) {
  elem .blur();
}