当前位置:  开发笔记 > 前端 > 正文

如何使用jQuery选择一个关注它的元素

如何解决《如何使用jQuery选择一个关注它的元素》经验,为你挑选了5个好方法。

如何选择具有当前焦点的元素?

:focusjQuery中没有过滤器,这就是为什么我们可以使用这样的东西:

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

Sam Shiles.. 153

$(document.activeElement) 将返回当前聚焦的元素,并且比使用伪选择器更快:焦点.

资料来源:http://api.jquery.com/focus-selector/



1> Sam Shiles..:

$(document.activeElement) 将返回当前聚焦的元素,并且比使用伪选择器更快:焦点.

资料来源:http://api.jquery.com/focus-selector/


*这个*应该是选择的答案.没有DOM遍历,并且比这里提供的任何其他解决方案快得多.
这是正确的答案.当你只想要当前选中的元素时,jQuery文档甚至会说不使用:focus伪选择器.
是的,即使是jquery文档也会在伪查询上推荐这种方法.

2> 小智..:
alert($("*:focus").attr("id"));

我使用jQuery.

它将警告元素的id正在聚焦.

我希望它对你有用.


性能很差,尽可能使用document.activeElement.
耶稣 - 你真的使用*作为选择器吗?你知道*选择_ALL_元素吗?每个该死的桌子上的每一个td.93赞成?
Sam Shiles回答,建议使用$(document.activeElement),是一个更好的解决方案.直接来自jQuery docs页面:focus伪选择器:"如果你正在寻找当前关注的元素,$(document.activeElement)将检索它而不必搜索整个DOM树."
从我可以收集的内容来看,自从OP提出这个问题以来,对jquery的支持已添加了`:focus`过滤器,所以这个答案现在有效了.
我认为应该选择这个作为答案.谢谢BiBi

3> Mike_G..:

实际上,最好的方法是为onFocus事件设置处理程序,然后将变量设置为具有焦点的元素的ID.

这样的事情:

var id;

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


IS窗口输入?此代码表示仅选择输入元素.所以窗口不会触发回调.
到目前为止,Sam Shiles的回答似乎是最好的.
因为窗口也可以获得焦点,这意味着此代码在所有情况下都无法正常工作.

4> bendewey..:

你有没有尝试过

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

alert($('input :focused').length);



5> jmanrubia..:

如果你使用JQuery,你可以编写一个这样的选择器:

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

然后,您可以选择当前关注的元素: $(":focus")

不仅表单控件可以有焦点.任何带有tabindex的html元素都可以集中在现代浏览器中.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有