javascript - 如何使mouseenter函数循环

标签 javascript jquery

我想创建一个功能,如果用户将光标悬停在图像上,图像就会发生变化并循环显示我指定的一堆图像。我之前已经实现了这一点,但我没有使用悬停,而是使用点击,这相当容易。

简而言之,如何使图像在 mouseenter 上循环?

我的代码:

var n = 0;

var images = ["3.jpeg","4.jpeg","6.jpeg","7.jpeg","8.jpeg","10.jpeg","12.jpeg","13.jpeg","14.jpeg","15.jpeg","16.jpeg"];

var image = $('#himg');

image.on('mouseenter', function change() {

    var newN = n+1;

    if (newN >= images.length) { newN = 0 };

    image.attr('src', images[n]);

    image.fadeOut(200, function () {
        image.attr('src', images[newN]);
        image.fadeIn();
        n = newN;
    });
});

最佳答案

mouseenter当鼠标移动到 dom 元素的范围内时仅触发一次。当鼠标最终离开时,会触发 mouseleave 事件。您可以使用它来启动一个间隔来循环浏览您的图像。

var n = 0;

var images = ["3.jpeg","4.jpeg","6.jpeg","7.jpeg","8.jpeg","10.jpeg","12.jpeg","13.jpeg","14.jpeg","15.jpeg","16.jpeg"];

var image = $('#himg');

var intervalId;
var intervalTimeout = 200;

image.on('mouseenter', function change() {
    intervalId = setInterval(function() {
      var newN = n+1;

      if (newN >= images.length) { newN = 0 };

      image.attr('src', images[n]);

      image.fadeOut(200, function () {
          image.attr('src', images[newN]);
          image.fadeIn();
          n = newN;
      });
    }, intervalTimeout);
});

image.on('mouseleave', function() {
  clearInterval(intervalId);
});

关于javascript - 如何使mouseenter函数循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44932959/

相关文章:

javascript - 离开输入字段后调用函数

javascript - 提交前在输入字段中发生 relaoad 时如何保留值?

javascript - 滚动到 ckeditor 5 中的标记

javascript - 在 HTML5/Javascript 移动应用程序中下载 PDF 文件

javascript - Laravel 5.6 - 在 JavaScript 中获取路线名称

jquery - 零剪贴板悬停

javascript - 如何使用 JS 或 JQuery 对表格进行滚动加载?

javascript - 将图像添加到 svg

javascript - 链接到 iTunes (itms ://. ..) 而无需打开新窗口

javascript - 在外部单击时关闭导航栏,而不仅仅是关闭按钮