jQuery 1.4.2:.is(“:focus”)给出了语法错误
假设有一个单一输入的文档。 我想要做的就是这么简单:
$("input").focus().is(":focus");
我希望上面的代码返回true
。 相反,firebug记录错误:
Syntax error, unrecognized expression: Syntax error, unrecognized expression: focus
我在这里想念的是什么? 我假设is()
使用的语法与$()
相同,或者我不能这样做?
如果这是不可修复的,你会如何建议检查焦点输入?
编辑:
从jquery 1.6开始, :focus
选择器是jquery核心的一部分: http : //api.jquery.com/focus-selector/
如果您需要它,只需升级。
$("input").focus()
应该足够了。 As :focus
不是选择器。
$("input").focus(function () { //do something });
编辑:
$("input:focus").runFunc();
我想这可行。 Cletus很好地总结了这个问题,我认为值得一看。
您可以使用document.activeElement
测试它是否是活动(聚焦)元素,如下所示:
if($("input")[0] == document.activeElement) { //first input is focused }
你可以在这里尝试一下 。 请注意,虽然大多数时候你的动作是在另一个元素上触发的,所以如果你单击一个按钮然后它会有焦点而现在是活动元素,所以你不能通过按钮检查来检查它,因为元素已经在大多数情况下,在您的活动开始时更改。
将其添加到您的代码中它将起作用:
jQuery.expr[':'].focus = function( elem ) { return elem === document.activeElement && ( elem.type || elem.href ); };
你可以使用jQuery .data()函数来做类似的事情。
$('input').focus(function () { $(this).data('focus', true); // set focus to true (on focus) }); $('input').blur(function () { $(this).data('focus', false); // set focus to false (on blur) });
然后检查焦点使用$('#element-id').data('focus')
。 如果将此值设置为true,则该元素具有焦点。
做这样的事情:
$('input').focus(function(){$(this).addClass('focus')});
然后你可以检查一个元素是否具有这样的焦点:
$('input').hasClass('focus'); // this will return true or false
如果你想检查输入是否有焦点你可以使用:
$('input:focus') //returns the focused element, assuming it's an input element... $('[selector]:focus').length == 0 //check if a selected element has focus...