首先,这是迷你javascript脚本:

 f = 1
 $(".thumb").hover(function() {
       intervalId = setInterval($(this).text(f++), 400));
  });


我试图在用户移动鼠标时使.thumb文本增加,当我将鼠标悬停并再次悬停时,它会增加。但是,当用户将鼠标悬停在元素上方时,我想增加该文本。

最佳答案

您必须像这样将实际函数传递给setInterval()

 f = 1
 $(".thumb").hover(function() {
       var self = $(this);
       intervalId = setInterval(function() {self.text(f++)}, 400));
  });


您在原始代码中所做的就是将调用$(this).text(f++)的结果传递给setInterval(),该结果立即执行。由于该函数不会返回任何函数,因此setInterval()没有回调函数,因此在该间隔上没有任何运行。



如果您还想在停止悬停时停止间隔,则可以执行以下操作:

 var f = 1;
 var intervalId;
 $(".thumb").hover(function() {
     var self = $(this);
     if (intervalId) {
         clearInterval(intervalId);
     }
     intervalId = setInterval(function() {self.text(f++)}, 400));
 }, function() {
     f = 1;
     clearInterval(intervalId);
     intervalId = null;
 });

10-06 12:33