在我正在构建的网站的首页上,有几个<div>使用CSS :hover伪类在鼠标悬停在它们上方时添加边框。的其中一个<div>包含<form>,如果其中的输入具有焦点,则使用jQuery使用jQuery保留边框。除了IE6不支持s :hover之外<a>的任何其他元素,这都可以正常工作。因此,仅对于此浏览器,我们使用jQuery :hover使用该$(#element).hover()方法来模仿CSS 。唯一的问题是,现在jQuery同时处理了form focus() 和 hover(),当输入具有焦点时,用户将鼠标移入和移出,边框就会消失。
我当时以为我们可以使用某种条件阻止这种行为。例如,如果我们在鼠标移出时测试了任何输入是否具有焦点,则可以阻止边框消失。AFAIK,:focusjQuery中没有选择器,所以我不确定如何实现。有任何想法吗?
我最后要做的是创建一个名为.elementhasfocus的任意类,该类在jQuery focus()函数中添加和删除。当hover()函数在鼠标移出时运行时,它将检查.elementhasfocus:
因此,如果没有该类(请参阅:div中的任何元素都没有焦点),则边框将被移除。否则,什么也不会发生。