2009-02-05 90 views
64

如何选择具有当前焦点的元素?如何选择一个与jQuery关注的元素

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

$('input:focus').someFunction(); 
+2

什么是你真正想要做这样我就可以知道是否有更好的方法 – TStamper 2009-02-05 14:48:30

+3

http://stackoverflow.com/questions/967096 /使用-jquery-to-test-if-an-input-has-focus – gnarf 2011-05-04 17:27:33

+0

请注意,您可以使用`$(':focus')`来查找当前文档中当前焦点的元素。 – 2014-10-09 03:09:25

回答

32

真正做到这一点是建立在onfocus事件处理程序的最佳方式,然后设置一个变量为具有焦点的元素的ID。

是这样的:

var id; 

$(":input").focus(function() { 
    id = this.id; 
}); 
+1

为什么$(this).attr('id')使用this.id – redsquare 2010-01-03 08:17:58

+3

这是因为该窗口也可以获得焦点,这意味着在任何情况下该代码都不会按预期工作。 – cbp 2010-08-06 05:03:17

+9

IS窗口输入?该代码表示​​只选择输入元素。所以窗口不会触发回调。 – 2011-08-19 11:35:59

5

你试过

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

alert($('input :focused').length); 
123
alert($("*:focus").attr("id")); 

我使用jQuery。

它会警告元素的ID正在关注。

我希望它对你有用。

5

如果您使用JQuery,你可以写一个selector like this

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

您可以再选择当前焦点元素:$(":focus")

不仅表单控件可以有重点。任何带有tabindex的html元素都可以专注于现代浏览器。

4

从当前的jQuery版本(1.7)实施例抬升文档:

$(elem).is(":focus"); 
1

为了检查元素具有焦点或没有。

if ($("...").is(":focus")) { 
    ... 
} 
0

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

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

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