64

如何选择具有当前焦点的元素?

jQuery中没有:focus过滤器,这就是为什么我们可以使用这样的东西:

$('input:focus').someFunction();
4

8 回答 8

153

$(document.activeElement)将返回当前聚焦的元素,并且比使用伪选择器:focus 更快。

来源:http ://api.jquery.com/focus-selector/

于 2012-03-26T15:29:47.130 回答
123
alert($("*:focus").attr("id"));

我使用 jQuery。

它将提醒元素的 id 正在聚焦。

我希望它对你有用。

于 2010-01-14T02:28:49.340 回答
32

最好的方法是为 onFocus 事件设置一个处理程序,然后将一个变量设置为具有焦点的元素的 ID。

像这样的东西:

var id;

$(":input").focus(function () {
     id = this.id;
});
于 2009-02-05T14:40:49.097 回答
5

你有没有尝试过

$.extend($.expr[':'], {
    focused: function(elem) { return elem.hasFocus; }
});

alert($('input :focused').length);
于 2009-02-05T18:41:58.893 回答
5

如果你使用 JQuery,你可以写一个这样的选择器

$.expr[':'].focus = function(a){ return (a == document.activeElement); }

然后,您可以选择当前聚焦的元素:$(":focus")

不仅表单控件可以有焦点。任何带有 tabindex 的 html 元素都可以在现代浏览器中聚焦。

于 2010-11-24T18:03:58.490 回答
4

从当前 jQuery 版本 (1.7) 文档的示例中提取:

$(elem).is(":focus");
于 2011-11-14T17:22:06.150 回答
1

检查元素是否有焦点。

if ($("...").is(":focus")) {
  ...
}
于 2012-05-09T09:51:36.850 回答
0

这是它的 CoffeeScript 版本。基于 jmanrubia 的代码:

$.expr[':'].focus = (a) -> a is document.activeElement

你也可以这样称呼它$(".:focus")

于 2012-08-22T11:49:09.527 回答