2010-08-29 96 views
6

確定這裏是我的代碼jQuery的:AJAX事件

$("#content_Div").ajaxStart(function() { 
    $(this).css('cursor', 'wait') 
}).ajaxComplete(function() { 
    $(this).css('cursor', 'default') 
}); 

這是一個相當簡單的問題:在ajaxStart光標立即切換到(等待)沙漏但ajaxComplete它不更改回defalut直到您移動鼠標。

lol dat是我的問題,但我寫這個時,我意識到ajaxComplete後,如果你點擊它會改回默認,所以光標在ajaxStart上立即改變的唯一原因是因爲你必須雙擊一個元素content_Div爲了啓動請求,所以點擊事件是wat在ajaxStart事件開始之後改變光標。所以我想要的是一種改變光標而不必移動或再次點擊的方式。

顯然我想用光標通知用戶何時請求完成。

在此先感謝

托馬斯:

function DF() { //Deletes selected File 
if (selectedfiles.length == 0) { 
    alert("No file slected!"); 
    return 
}; 
var selectedtxt = (selectedfiles.length == 1) ? "'" + basename(selectedfiles[0]) + "'?" : 'these ' + selectedfiles.length + ' files?'; 
if (confirm("Are you sure you want to delete " + selectedtxt)) { 
    $.each(selectedfiles, function() { 
     $.post("server/editfile.php", { 
      user: user, 
      oper: "del", 
      path: "../" + this 
     }, function (res) { 
      if (res) { 
       alert(res); 
      } 
      else LT(dirHistory[current]); 
     }); 
    }) 
} 

}

+0

你可以發佈你的ajax請求代碼...通常如果我有一個加載屏幕(或在你的情況下,你想改變鼠標光標),你可以在那裏做。在運行ajax之前,將鼠標指針改爲「wait」,然後當函數返回時表示它已經成功(通常簡單地稱爲「success:function(){}'),只需將其改回即可。 – 2010-08-29 15:32:07

+0

托馬斯我會嘗試,但將鼠標光標改變AUTOMATICALLY或您將不得不點擊或移動鼠標爲了光標改變 – dlaurent86 2010-08-29 15:39:30

+0

和我有很多不同的請求,而不是編輯每一個我希望有一種方式來設置ajax事件曾在全球範圍內發生過。 – dlaurent86 2010-08-29 15:43:51

回答

0

確定它已經大約5個小時,因爲我張貼了這個問題,沒有人甚至提出在回答這又一個嘗試。所以我即將發佈我發現的東西。

這是一個Google chrome和Safari Bug。 chromium

在所有其他瀏覽器中,您可以動態更改鼠標光標而無需用戶單擊或移動鼠標。

女巫擊敗了我正在嘗試做的事情。通知用戶何時完成請求,如果用戶在那裏取下鼠標並等待光標改變,他們將一直等待,直到他們試圖離開,因爲他們教我的網頁被凍結。沒有修復,因爲如果你檢查上面的鏈接,錯誤仍然未確認。我沒有發現周圍的工作要麼所以這是我做過什麼

$("#content_Div").ajaxStart(function() { 
    if(!$.browser.safari)//ignores ajaxStart if browser is safari or chrome 
    $(this).css('cursor', 'wait') 
}).ajaxComplete(function() { 
    $(this).css('cursor', 'default') 
}); 
+3

這不是大多數網站的常見行爲 - 當一個AJAX請求正在進行時,通常會顯示一些「正在加載...」的圖像,並且當請求完成時,圖像將消失。 BTW:你可以在http://ajaxload.info/免費下載這樣的圖片。 – dmitko 2010-08-30 07:19:19

1

它不會出現,用戶必須將光標移動在改變之前,但除了這個,還有另外一個問題。如果用戶將光標從#content_Div上移開,那麼他們將無法查看數據是否正在加載,因爲CSS僅適用於懸停在該特定DIV上的數據。

無論用戶做什麼,清楚地顯示數據被提取的方法都是使用動畫gif,「正在加載....」字樣,或兩者都使用。與改變用戶的光標相比,這種解決方案也不那麼幹擾。

如果當請求數據時,您會將一個加載圖像附加到將顯示數據的div上,那麼一旦加載數據,該加載圖像自然會消失。例如:

$("#content_Div").ajaxStart(function() { 
    $("#content_Div").append('<img src="loading.gif" />'); 
}); 

在這種情況下,由於加載的數據替換圖像,所以不需要ajaxStop。

Here is a jsFiddle example that makes use of both an image and lettering.

jsFiddle with multiple buttons and a loading div at the center of the page.