【发布时间】: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
});
【问题讨论】:
-
您将需要使用事件委托来处理运行代码时不存在的元素。阅读 jQuery on() 文档
-
@charlietfl 是的,我知道,我在上面提到过我已经尝试过调整页面大小,你有什么建议吗?
-
是的,将 mouseenter 和 mouseleave 委托给页面中的前置资产并使用
.thumbnail作为目标 -
@charlietfl 即使使用 on mouseenter 委托,它也只会影响无限滚动上方的产品。
-
建议您创建一个复制问题的演示。你是如何使用
on()显示代码
标签: javascript jquery html shopify infinite-scroll