代码之家  ›  专栏  ›  技术社区  ›  Razor

jQuery 1.4.2:.is(“:focus”)给出语法错误

  •  2
  • Razor  · 技术社区  · 16 年前

    $("input").focus().is(":focus");
    

    我希望上面的代码会返回 true . 相反,firebug会记录一个错误:

    Syntax error, unrecognized expression: Syntax error, unrecognized expression: focus
    

    我错过了什么?我假设 is() 与相同 $() 或者我做不到?

    编辑:

    从jquery1.6开始 :focus 选择器是jquery核心的一部分: http://api.jquery.com/focus-selector/
    如果你需要的话,升级就行了。

    6 回复  |  直到 6 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    $("input").focus() 应该够了。作为 :focus 不是选择器。

      $("input").focus(function () {
             //do something
        });
    

    编辑:

    $("input:focus").runFunc(); 我想是的 可以 Cletus 把这个问题总结得很好,我想,值得一看。

        2
  •  5
  •   Nick Craver    16 年前

    你可以测试它是否是活动的(聚焦的)元素 document.activeElement 这样地:

    if($("input")[0] == document.activeElement) {
      //first input is focused
    }
    

    You can give it a try here 它 会有焦点,现在是活动元素,所以不能用按钮检查,因为在大多数情况下,在事件触发时元素已经改变了。

        3
  •  2
  •   Raduly Botond    15 年前

    将此添加到您的代码中,它将工作:

    jQuery.expr[':'].focus = function( elem ) {
      return elem === document.activeElement && ( elem.type || elem.href );
    };
    
        4
  •  1
  •   Viktor Stískala    16 年前

    .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,则元素具有焦点。

        5
  •  0
  •   Moin Zaman    16 年前

    $('input').focus(function(){$(this).addClass('focus')});

    然后可以检查元素是否具有如下焦点:

    $('input').hasClass('focus'); // this will return true or false

        6
  •  0
  •   mamoo    16 年前

    如果要检查输入是否有焦点,可以使用:

    $('input:focus') //returns the focused element, assuming it's an input element...
    
    $('[selector]:focus').length == 0 //check if a selected element has focus...