我希望在将鼠标悬停时停止闪烁。有什么想法吗?

      function blinker() {
        $( & #39;.blinking&# 39;).fadeOut(1000);
        $( & #39;.blinking&# 39;).fadeIn(1000);
      }
      setInterval(blinker, 4000);

最佳答案

您可以按时间间隔存储一个处理程序,并在鼠标悬停时使用它来清除它:

function blinker() {
    $('.blinking').fadeOut(1000);
    $('.blinking').fadeIn(1000);
}
intervalHandler = setInterval(blinker, 4000);

$('.blinking').mouseover(function() {
    clearInterval(intervalHandler);
    intervalHandler = undefined;
});


如果希望在按钮不再悬停时再次闪烁,可以将间隔设置回去:

$('.blinking').mouseout(function() {
    if (!intervalHandler) {
        intervalHandler = setInterval(blinker, 4000);
    }
});


通过在清除间隔时将处理程序设置为undefined,可以确保永远不要两次设置间隔,这将防止您同时清除两个间隔并使闪烁持续存在。

感谢@Luger的评论,我编辑了答案。

09-28 08:24