【问题标题】:jQuery pop-up not working on page with infinite scrollingjQuery弹出窗口在无限滚动的页面上不起作用
【发布时间】:2014-05-16 19:32:08
【问题描述】:

我正在使用一个网站,其中包含一组产品(最初只有图像),当您将鼠标悬停在它们上方时,它会显示一个包含项目详细信息的弹出窗口、立即购买按钮等.

这一切都很好,除非您向下滚动并且无限滚动启动并加载另一组产品,即使使用正确的 javascript 和 css 作为其上方的非无限产品,它也不会显示弹出窗口。

我尝试解决此问题的方法:

  • 在调整窗口大小时将调用移至 jQuery 调用
  • 将调用移至 hoverIntent(jQuery 插件 - http://cherne.net/brian/resources/jquery.hoverIntent.html
  • 如果加载的产品超过最初的 20 个产品,则只有在通过滚动到初始产品集下方激活“无限滚动”时才会出现此问题。

我用于弹出窗口的代码是:

  var hideTimer = null;
  var hoverElem = null;     

  function openFbox() {
    $(this).attr('href', $(this).find('.quickview').attr('href'));
    $.facebox({ div: $(this).attr('href') });
  }

  function closeFbox() {
    if (hoverElem != 'facebox_overlay') {
      // do nothing
    } else {
      hideTimer = setTimeout(function() {
        if (hoverElem == 'facebox_overlay')
            closeIt();
      }, 750); 
    }
  }
 $(".thumbnail")
    .hoverIntent({
    sensitivity: 7,
    interval:400,
    timeout:0,
    over: openFbox,
    out: closeFbox
});

无限滚动的代码是:https://gist.github.com/rickydazla/1390610

【问题讨论】:

  • 您将需要使用事件委托来处理运行代码时不存在的元素。阅读 jQuery on() 文档
  • @charlietfl 是的,我知道,我在上面提到过我已经尝试过调整页面大小,你有什么建议吗?
  • 是的,将 mouseenter 和 mouseleave 委托给页面中的前置资产并使用 .thumbnail 作为目标
  • @charlietfl 即使使用 on mouseenter 委托,它也只会影响无限滚动上方的产品。
  • 建议您创建一个复制问题的演示。你是如何使用on() 显示代码

标签: javascript jquery html shopify infinite-scroll


【解决方案1】:

当你附加悬停监听器时,你需要使用 jQuery 方法 .on()。这会将侦听器附加到 DOM 中的永久元素,但等待对指定子元素的操作。

$("parentElementSelector").on("mouseenter", "targetSelector", function() {
    $(this).attr('href', $(this).find('.quickview').attr('href'));
    $.facebox({ div: $(this).attr('href') });
}).on("mouseleave", "targetSelector", function() {
    if (hoverElem != 'facebox_overlay') {
      // do nothing
    } else {
      hideTimer = setTimeout(function() {
        if (hoverElem == 'facebox_overlay')
            closeIt();
      }, 750); 
    }
});

父级可以是主体,目标可以是 .thumbnail

【讨论】:

  • 谢谢,这与我从 charlietfl 得到的答案相似,我还不能添加或选择答案。
猜你喜欢
  • 1970-01-01
  • 2016-12-25
  • 2015-12-16
  • 2011-04-07
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多