2009-02-05 88 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")