我见过这个jQuery语法:
if($(element).is(':hover')) { do something}
Run Code Online (Sandbox Code Playgroud)
由于我不使用jQuery,我正在寻找在纯JavaScript中执行此操作的最佳方法.
我知道我可以保持一个全局变量,设置/它通过取消设置mouseover和mouseout,但我不知道是否有某种方式通过DOM,而不是检查元素的本地属性?也许是这样的:
if(element.style.className.hovered === true) {do something}
Run Code Online (Sandbox Code Playgroud)
此外,它必须是跨浏览器兼容的.
我真正想要的是检测光标何时更改为“文本”类型,即何时将鼠标悬停在一段文本上。我尝试查看我悬停的元素类型,但这不太准确,因为我不知道它们实际包含什么。
据我所知,只有我之前指定了 CSS 光标属性,才可以检测到该属性。
这有可能吗?你会怎样做呢?
编辑:我不想检查如果我当前位于特定元素上,我想知道我是否将鼠标悬停在该元素内的任何文本上。div 可以是浏览器的 100% 宽度,但最左侧有较短的文本。我不想检测何时将鼠标悬停在元素的任何部分上。
以下代码引发了unsupported pseudo: hoverjQuery 1.8 的错误,而它在jQuery 1.7.2上运行完美:
if(!$(this).parent().find('ul').first().is(':hover')) {
$(this).parent().parent().removeClass('open');
}
Run Code Online (Sandbox Code Playgroud)
有谁知道发生了什么?
当鼠标光标悬停在不同的页面元素上时,是否有任何事件被触发?
理想情况下这样的事件:
window.onmousecursorchange = function(e) {
// e would contain information about the cursor
// eg. e.type could contain 'text','pointer', etc..
}
Run Code Online (Sandbox Code Playgroud)
注意:解决方案不应涉及jQuery或其他库
更新:
"可能重复"的问题用jQuery标记,所有答案(没有一个解决问题)基于jQuery.我正在寻找一个纯JavaScript解决方案.如果主持人认为这还不足以让这个问题保持开放,请随时关闭.