【问题标题】:How to check if a dom element is focusable? [duplicate]如何检查dom元素是否可聚焦? [复制]
【发布时间】:2013-08-18 04:02:22
【问题描述】:

许多 DOM 元素都是可聚焦的:带有 tabIndex 的 div、输入元素等。有没有比检查无数不同情况更简单的方法来检查元素是否可聚焦?有 jQuery 方法吗?

【问题讨论】:

  • @HashemQolami,这不是他想要的。
  • 而且我没有说是!,我只是问了一个问题。
  • 为什么这个问题是重复的?! OP 不关心页面上所有可聚焦的元素,这就是顶部链接的问题似乎要回答的问题。 OP 只是想找出给定的 dom 元素是否可以接收焦点。两个非常不同的问题。

标签: javascript jquery dom


【解决方案1】:

从这里回答“翻译”:Which HTML elements can receive focus?

  • <a><area>href
  • 任何未禁用的表单元素
  • iframe
  • 任何带有tabindex的元素

另外,我相信隐藏的元素也无法获得焦点。

假设条件,以下函数可能会对您有所帮助(假设它总是会收到一个 jQuery 元素):

function canFocus( $el ) {
    if ( $el.is( ":hidden" ) || $el.is( ":disabled" ) ) {
        return false;
    }

    var tabIndex = +$el.attr( "tabindex" );
    tabIndex = isNaN( tabIndex ) ? -1 : tabIndex;
    return $el.is( ":input, a[href], area[href], iframe" ) || tabIndex > -1;
}

【讨论】:

  • 我知道可以接收焦点的项目列表。但是,我想要一些现成且经过测试的解决方案,涵盖我可能不知道的所有情况。
  • 检查更新的答案是否对您有帮助。
  • jQuery内置了这个,只需使用$el.is(':focusable')api.jqueryui.com/focusable-selector
  • 这是来自 jQuery UI,不是 jQuery 核心。那么为什么投反对票,你能解释一下吗?
  • 高度为0的元素不可聚焦
猜你喜欢
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 2018-07-09
  • 2013-11-09
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
相关资源
最近更新 更多