5

当鼠标悬停在元素上时,我正在尝试动态更改光标样式。光标应该是“移动”或“默认”,具体取决于方法返回的布尔值。代码是这样的:

$("#elemId").mousemove(function(event) {
    if(cursorShouldBeMove()) {
        $(this).css({'cursor':'move'});
    } else {
        $(this).css({'cursor':'default'});
    }
}

这段代码在 IE8、FF3、Chrome 和 Safari 中就像一个魅力。只有 Opera 无法正确处理它。

我正在使用 Opera 9.6.4

有谁知道如何解决这个问题?


我准备了一个样品进行测试;

var cursorStatus = true;
setInterval(function() { cursorStatus = !cursorStatus; }, 500);

function cursorShouldBeMove() {
  return cursorStatus;
}

$(function() {
  $("#elemId").mousemove(
    function(event) {
      $(this).css("cursor", cursorShouldBeMove() ? "move" : "default");
    }
  );
});

如果您将鼠标从#elemId 外部移动到其内部几次,您会看到光标会发生变化。但是,如果您将鼠标放在#elemId 中并移动鼠标,则光标不会改变。

代码非常简单。我认为这是Opera的错误。

我也测试了这段代码;

  • Firefox 3.5.1(工作)
  • Internet Explorer 7(工作)
  • 谷歌浏览器 2.0(工作)
  • Safari 3.2(工作)

(Windows 版本)

4

1 回答 1

3

Opera 的光标非常有趣。我发现您必须将鼠标移到元素上两次才能真正起作用。可以在这里看到,您需要将鼠标悬停在 Hello World 上两次才能使光标发生变化。

此处描述的相同问题

于 2009-07-22T08:22:37.763 回答