Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何在鼠标移动后停止ajax请求´;你不能动吗?_Jquery_Ajax - Fatal编程技术网

Jquery 如何在鼠标移动后停止ajax请求´;你不能动吗?

Jquery 如何在鼠标移动后停止ajax请求´;你不能动吗?,jquery,ajax,Jquery,Ajax,我有一个函数,只要鼠标悬停在.postimagepic元素上,它就会每秒发送一个ajax请求 现在的问题是:如果鼠标在30秒内没有移动,我希望ajax请求(可能是setinterval函数)每秒停止发送请求。我所有的尝试都失败了,mousemove.:/你有其他的想法或方法来解决这个问题吗 jQuery var myInterval; $(".postimagepic").hover(function () { var link = $(this).attr("src")

我有一个函数,只要鼠标悬停在.postimagepic元素上,它就会每秒发送一个ajax请求

现在的问题是:如果鼠标在30秒内没有移动,我希望ajax请求(可能是setinterval函数)每秒停止发送请求。我所有的尝试都失败了,mousemove.:/你有其他的想法或方法来解决这个问题吗

jQuery

var myInterval;
    $(".postimagepic").hover(function () {
        var link = $(this).attr("src").split("/").pop().split(".", 1)[0];
        myInterval = setInterval(function () {
            $.ajax({
                url: 'time.php',
                type: 'post',
                data: {
                    'user':'somerandomname',
                    'topost':link
                },
                success: function() {

                }
            });
        }, 1000);
    }, function () {
        clearInterval(myInterval);
    });
上面的代码只是引入了另一个变量i,它将检查是否已过30秒,然后为您清除间隔


上面的代码只是引入了另一个变量i,它将检查是否已过30秒,然后为您清除间隔。

这可能就是您要查找的:

我使用了mousemove和mouseleave事件。这可能不是最好的实现,您甚至可以使用另一个人的想法来使用计数器,而不是第二次超时

var myInterval = false;
var idleInterval = false;
var counter = 0;
$(function(){
    $('.hover_over_me').mousemove(function(){
    if(!myInterval) {
        clearHoverEvent();
      myInterval = setInterval(function () {
        $('#console').html(++counter);
      }, 1000);
      idleInterval = setInterval(function () {
        clearHoverEvent();
      }, 30000);
    }
  });

  $('.hover_over_me').mouseleave(function(){
    clearHoverEvent();
  });
});

function clearHoverEvent() {
    if(myInterval) {
        clearInterval(myInterval);
    myInterval = false;
  }
  if(idleInterval) {
    clearInterval(idleInterval);
    idleInterval = false;
  }
}

这可能就是您正在寻找的:

我使用了mousemove和mouseleave事件。这可能不是最好的实现,您甚至可以使用另一个人的想法来使用计数器,而不是第二次超时

var myInterval = false;
var idleInterval = false;
var counter = 0;
$(function(){
    $('.hover_over_me').mousemove(function(){
    if(!myInterval) {
        clearHoverEvent();
      myInterval = setInterval(function () {
        $('#console').html(++counter);
      }, 1000);
      idleInterval = setInterval(function () {
        clearHoverEvent();
      }, 30000);
    }
  });

  $('.hover_over_me').mouseleave(function(){
    clearHoverEvent();
  });
});

function clearHoverEvent() {
    if(myInterval) {
        clearInterval(myInterval);
    myInterval = false;
  }
  if(idleInterval) {
    clearInterval(idleInterval);
    idleInterval = false;
  }
}

效果很好!!谢谢你的帮助!效果很好!!谢谢你的帮助!