根据鼠标位置如何更改光标?

3

当鼠标进入元素中的矩形区域(50, 50, 100, 100)时,我希望将光标从default更改为pointer

我知道可以定义一个

,将其放置在该位置,并设置cursor: pointer;,但我正在寻找一种不需要定义
的方法。

我想要类似于以下内容:

if (mousePosition inside rectangle) {
    change cursor to pointer
} else {
    change cursor to default
}

这可以做到吗?

1
在鼠标移动时更改容器的光标。 - jantimon
1个回答

2
尝试类似以下代码(未经测试):

尝试类似以下代码(未经测试):

$("body").mousemove(function(e){
    if (e.pageX > 50 && e.pageY > 50 && e.pageX < 100 && e.pageY < 100)
        $("body").css("cursor", "pointer");
    else
        $("body").css("cursor", "default");
});

你可能想出于性能考虑,使用全局变量而不是每次应用属性。此外,你可能需要考虑使用CSS类而不是直接在JS中设置样式。
更新:为什么我会想到style而不是css... :(

通常情况下,我会使用.style("cursor", "")而不是.style("cursor", "default"),以防页面上实际上没有使用"默认"光标。 - Sparafusile
2
.style()不起作用,无论你如何调用它,因为它不是jQuery方法。你要找的是.css() - jAndy
你应该在这里使用.css()而不是.style(),尽管这并不能保证它会起作用。例如,如果你在一个已定义了光标的元素上方,那么这是比<body>更本地的样式...但这应该足够好用了。 - Nick Craver
我的主要问题是<input type='file' />元素会强制光标变成其他样子。请参见此处:http://jsfiddle.net/rdnhh/1/。有什么解决方法吗? - Misha Moroshko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接