使用 jquery 将焦点设置到元素时似乎存在问题。它显然不会触发元素上设置的 :focus css 属性。
例如,在我的 CSS 中,我有:
div.item1:focus { border:2px solid red; }
在我的 jquery 中,我有:
$("div.item1").focus();
焦点已设置,但元素没有应用红色边框。
div
元素不使用:focus
选择器 .. 参见CSS2 规范
:focus 伪类在元素具有焦点时应用(接受键盘事件或其他形式的文本输入)。
你可以这样做:
.hoverclass { border:2px solid red; }
$("div.item").hover(function() {
$(this).addClass('hoverclass')
},function() {
$(this).removeClass('hoverclass')
});
focus()
仅可用于表单元素和链接,如果您尝试将其用于其他类型的元素,则无法使用。
有关更多信息,请参见focus() 的 jQuery 文档,
从手册:
当元素获得焦点时,焦点事件被发送到元素。此事件隐式适用于一组有限的元素,例如表单元素(
<input>
、<select>
等)和链接(<a href>
)。在最近的浏览器版本中,可以通过显式设置元素的 tabindex 属性来扩展事件以包括所有元素类型。元素可以通过键盘命令(例如 Tab 键)或通过鼠标单击元素获得焦点。
有关示例,请参见此答案:https ://stackoverflow.com/a/5966034/1013082
转到 jQuery focus() 页面查看:
当元素获得焦点时,焦点事件被发送到元素。此事件隐式适用于一组有限的元素,例如表单元素(
<input>
、<select>
等)和链接(<a href>
)。在最近的浏览器版本中,可以通过显式设置元素的 tabindex 属性来扩展事件以包括所有元素类型。元素可以通过键盘命令(例如 Tab 键)或通过鼠标单击元素获得焦点。
在此处转到 PPK 对浏览器的关注研究
看起来所有浏览器都通过了 tabindex 测试。
你需要这样做:
$("div.item1").focus(function(){
$("div.item1").css("border","2px solid red");
});