マウスが要素の上にあるときに、カーソルのスタイルを動的に変更しようとしています。メソッドによって返されるブール値に応じて、カーソルは「移動」または「デフォルト」のいずれかになります。コードは次のようなものです。
$("#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版)