2009-07-22 98 views
4

我試圖在鼠標位於元素上時動態更改光標樣式。根據方法返回的布爾值,遊標應該是「移動」或「默認」。 的代碼是這樣的:在Opera中使用jquery將動態光標樣式分配給元素

$("#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的一個bug。

我測試了這個代碼也;

  • 火狐3.5.1(工作)
  • 的Internet Explorer 7(工作)
  • 谷歌瀏覽器2.0(工作)
  • Safari瀏覽器3.2(工作)

(Windows版本)

回答

3

歌劇與遊標真正有趣。我發現在實際工作之前必須將鼠標移到元素上兩次。 可以看到here,您需要將鼠標懸停在Hello World兩次以更改光標。

同一問題描述here