如何在鼠标移动后停止ajax请求?

时间:2016-03-19 06:00:58

标签: jquery ajax

我有一个函数,只要鼠标悬停在.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);
    });

2 个答案:

答案 0 :(得分:1)

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

                }
            });
            i++;
            if(i == 30) {
               clearInterval(myInterval);
            }
        }, 1000);
    }, function () {
        clearInterval(myInterval);
    });

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

答案 1 :(得分:1)

这可能就是您要找的内容:https://jsfiddle.net/w5L0tc7j/1/

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

{{1}}