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