有没有办法检测我是否将鼠标悬停在文本上?

Cha*_*lle 6 javascript jquery text dom hover

我真正想要的是检测光标何时更改为“文本”类型,即何时将鼠标悬停在一段文本上。我尝试查看我悬停的元素类型,但这不太准确,因为我不知道它们实际包含什么。

据我所知,只有我之前指定了 CSS 光标属性,才可以检测到该属性。

这有可能吗?你会怎样做呢?

编辑:我不想检查如果我当前位于特定元素上,我想知道我是否将鼠标悬停在该元素内的任何文本上。div 可以是浏览器的 100% 宽度,但最左侧有较短的文本。我不想检测何时将鼠标悬停在元素的任何部分上。

Den*_*ret 1

无需尝试检测光标是否发生变化。

您可以使用这种构造简单地检测鼠标是否悬停在文本上:

document.getElementById('myTextId').onmouseover = function() {
    // do something like for example change the class of a div to change its color :
    document.getElementById('myDivId').className = 'otherColor';
};
Run Code Online (Sandbox Code Playgroud)

如果您没有 id,但有类或标记,则可以将 getElementById 替换为 getElementsByClassName 或 getElementByTagName(这将返回您要迭代的数组)。

如果你想在离开元素时恢复颜色,我建议你以同样的方式绑定事件onmouseout。

例如,如果您想对任何段落执行某些操作,您可以这样做:

var paras = document.getElementByClassName('p');
for (var i=0; i<paras.length; i++) {
    paras[i].onmouseover = function() {
        // do something like for example change the class of a div to change its color :
        document.getElementById('myDivId').className = 'otherColor';
    };
}
Run Code Online (Sandbox Code Playgroud)

如果你打算做很多这样的事情,我建议你看看 jquery 及其教程。

  • 我相当确定这不是问题所要求的。没有可使用的“id”或选择器,他希望检测光标何时位于任何“文本”上。可悲的是我认为这是不可能的。 (2认同)