2013-07-08 46 views
1
$("#sales-period").on("change", function() { 
    $("body").css("cursor", "wait"); 
}); 

上面是我用來更改鼠標光標的代碼,當下拉值更改時,問題是光標確實發生更改到身體的等待狀態,但是當我將鼠標懸停在鏈接上時,它仍然會變回指針。我怎樣才能compell它繼續顯示即使在徘徊的鏈接等在網頁的每一部分上更改鼠標光標

回答

8

作爲Yotam has posted,你可以覆蓋元素css cursor風格在做:

$("*").css("cursor", "wait"); 

但是,這是非常昂貴的,因爲DOM將不得不改變爲頁面上的每個元素。

另外,這將是一場噩夢,將所有遊標返回到它們被指定等待之前的狀態。如果他們以前有內聯樣式,那麼這些將被覆蓋,並且您將無法將它們返回到以前的狀態。


因此,我建議增加一類的body,然後讓你的CSS的所有變化:

$("body").addClass("waiting"); 

body.waiting, 
body.waiting a:hover, 
body.waiting * 
{ 
    cursor:wait !important; 
} 

然後刪除你根本就等待狀態:

$("body").removeClass("waiting"); 

這涉及到更少的DOM更改,並解決了您的問題與錨定懸停狀態遊標。

+0

'!important'聲明應該放在'cursor:wait;'之後。 – Paul

+0

乾杯@保羅。更正。 – Curt

2

使用CSS universal selector*選擇頁面上的所有元素的等待狀態:

$("*").css("cursor", "wait"); 

爲了獲得更好的性能與特點,你可以只針對標記,有不同的遊標,如鏈接或你自己改變了他們的光標等標籤..

要恢復到常規的遊標可使用:

$("*").css('cursor','auto'); 
+2

在代碼運行之前,已經分配給DOM元素的任何遊標會發生什麼?即你將如何「記住」他們的狀態並將其歸還? –

+0

@LeeTaylor這就是爲什麼我在等待更好的答案。 –

+0

我想使用類似@Curt的建議將是這種情況下的最佳主意。 –

1

您需要爲所有html元素重置CSS。您已將光標設置爲body元素。但a元素具有默認指針遊標。

試試這個style.css文件

body.wait, 
body.wait * { 
    cursor: wait; 
} 

jQuery代碼顯示/隱藏等待光標:

$("body").addClass("wait"); // to add wait cursor 

$("body").removeClass("wait"); // to remove wait cursor 
0

試試這個

jQuery("*").css("cursor", "wait");