2011-07-09 109 views
0

當我將鼠標懸停在<td>上時,它會等待900毫秒,然後發送很多請求(我總是將鼠標懸停在這些900毫秒內的更多tds上)。我究竟做錯了什麼?爲什麼只有clearTimeout(評論)的作品?發送ajax請求之前的延遲不起作用

我的觀點是擊球服務器之前,如果用戶移動鼠標到另一<td>在這個運行倒計時(900毫秒),之前的倒計時被中止和新發生

 $(function(){ 
       var isLoading = false; 
       $("td").hover(function(){ 
         var x = parseInt(0); 
         var position = $(this).attr('id'); 
         clearTimeout(timer); 
         var oID = $(this).attr('id'); 
         var oData = $(this); 
         var timer = setTimeout(function(){ 
           if (position == oID&&!isLoading) 
           { 
             clearTimeout(timer); 
             $.ajax({ 
               beforeSend: function(xhr){ var isLoading = true; }, 
               url: 'ajax.php?what=click&position='+position, 
               success: function(data){ 
                 $('#hovercard').css(oData.offset()); 
                 $('#hovercard').show(); 
                 $('#hovercard').html(data); 
               } 
             }); 
           } 
         }, 900); 
// this only works ->            clearTimeout(timer); 
       }); 
     }); 

回答

1

您將需要存儲timer等待在懸停功能之外的範圍內。我不太確定的範圍爲isLoading要麼,所以如果這不起作用,嘗試移動isLoading出相同的範圍爲timer

var timer; 
    $(function(){ 
      var isLoading = false; 
      $("td").hover(function(){ 
        var x = parseInt(0); 
        var position = $(this).attr('id'); 
        clearTimeout(timer); 
        var oID = $(this).attr('id'); 
        var oData = $(this); 
        timer = setTimeout(function(){ 
         if (position == oID&&!isLoading) 
         { 
           clearTimeout(timer); 
           $.ajax({ 
             beforeSend: function(xhr){ isLoading = true; }, 
             url: 'ajax.php?what=click&position='+position, 
             success: function(data){ 
                $('#hovercard').css(oData.offset()); 
                $('#hovercard').show(); 
                $('#hovercard').html(data); 
             } 
           }); 
         } 
        }, 900); 
      }); 
    }); 

您有一些其他的怪事也。請注意,oID始終等於位置,因爲它們在同一範圍內同時設置。這使得你的陳述中的第一個條件毫無意義。我還刪除了beforeSend函數中的var語句。