ホバーする<td>
と、900ミリ秒待機してから多くのリクエストが送信されます(これらの900ミリ秒で常により多くのtdsにホバーします)。私は何を間違っていますか?なぜclearTimeout
(コメントされた)だけが機能するのですか?
私のポイントは、サーバーにアクセスする前に待機することです。ユーザー<td>
がこの実行中のカウントダウン (900ms) でマウスを別の場所に移動すると、前のカウントダウンが中止され、新しいカウントダウンが行われます。
$(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);
});
});