【发布时间】:2015-02-06 10:36:20
【问题描述】:
我正在构建一个带有 jQuery 悬停功能的网站,该功能将当前图像替换为 data-hover-src 中的图像,并将“悬停”类添加到 .product-overlay,以便我可以在用户使用 CSS 时显示它将鼠标悬停在每个列表项上。
所有非常简单的东西,但是,如果用户在页面加载时将光标放在列表项上,我的代码会与我想要的相反,即它删除 .hover 类鼠标移出。
有没有办法确保.hover 类仅在光标位于列表项上方时添加?
谢谢,
奥苏
HTML
<ul class="product-listing">
<li class="item">
<a href="#" class="product-images">
<img src="{src1}" data-hover-src="{src2}">
</a>
<span class="product-overlay hidden">
Overlay content
</span>
</li>
<li>
...etc.
</li>
</ul>
jQUERY
// Hoverswap function
var hoverSwap = function () {
var $this = $(this).find('img');
var overlay = $(this).find('.product-overlay');
var newSource = $this.data('hover-src');
$this.data('hover-src', $this.attr('src')); // Show original source if hover-src is showing
$this.attr('src', newSource); // Vice versa
if( overlay.hasClass('hover') ) {
overlay.removeClass('hover');
} else {
overlay.addClass('hover');
}
}
// Run function
$('.product-listing li').hover(hoverSwap, hoverSwap);
JSFIDDLE
这是一个如何设置的示例 - 这只是为了查看悬停功能,由于某种原因,我无法重现我在这个小提琴中看到的问题...
视频
...所以这里有一段视频,让大家看得更清楚:
【问题讨论】:
-
我找不到小提琴伴侣的任何问题..
-
啊,我意识到小提琴实际上并没有显示行为(可能是因为它在 JS 之前加载了所有 HTML 和图像 - 我正在一个私人 Shopify 网站上工作,我在这里我看到了问题。理想情况下,我可以共享一个直接链接,但此时这是不可能的。有没有办法检查页面是否有“鼠标悬停”加载,然后修改我的代码以显示/隐藏@987654329相应地@类?
-
或者先检查覆盖是否“可见”?
-
您可以尝试在执行悬停功能之前检查图像是否已加载
-
感谢 Outlooker - 我已在此问题的描述中添加了一个视频,以向您展示我在网站上看到的内容,因为显然这很难修复而无法重现。跨度>
标签: jquery overlay jquery-hover