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 (動作)
  • Google Chrome 2.0 (動作)
  • Safari 3.2 (動作)

(Windows版)

4

1 に答える 1

3

Operaはカーソルで本当に面白いです。実際に機能する前に、要素上でマウスを2回移動する必要があることがわかりました。ここで、カーソルを変更するには、HelloWorldに2回カーソルを合わせる必要があることがわかります。

ここで説明されているのと同じ問題

于 2009-07-22T08:22:37.763 に答える