jQuery悬停交换图像不工作
jQuery hover to swap images not working
我有一个简单的悬停效果来改变图像的问题;有人知道我哪里做错了吗?我知道这很简单,但我是JS的新手。
// Category hover effects
$(".category-switch span").hover(function () {
$(this).fadeToggle();
}, function () {
$(this).fadeToggle();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
<a href="#" class="category-switch">
<span><img src="">image 1</span>
<span style="display:none;"><img src="">image 1 - hover</span>
</a>
</li>
<li>
<a href="#" class="category-switch">
<span><img src="">imag 2</span>
<span style="display:none;"><img src="">image 2 - hover</span>
</a>
</li>
<li>
<a href="#" class="category-switch">
<span><img src="">image 3</span>
<span style="display:none;"><img src="">image 3 - hover</span>
</a>
</li>
</ul>
您将需要从选择器中删除span
并使其仅为锚。然后在其中找到跨度来进行切换。它仍然需要调整以使其平滑过渡,但回答了这个问题。
$('.category-switch').hover(
function() {
$(this).find('span').fadeToggle();
}, function () {
$(this).find('span').fadeToggle();
}
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
<a href="#" class="category-switch">
<span><img src="">image 1</span>
<span style="display:none;"><img src="">image 1 - hover</span>
</a>
</li>
<li>
<a href="#" class="category-switch">
<span><img src="">imag 2</span>
<span style="display:none;"><img src="">image 2 - hover</span>
</a>
</li>
<li>
<a href="#" class="category-switch">
<span><img src="">image 3</span>
<span style="display:none;"><img src="">image 3 - hover</span>
</a>
</li>
</ul>
使用纯CSS也可以实现。
@-webkit-keyframes fadeIn {
00% {opacity: 0; display:block;}
100% {opacity: 1;}
}
@keyframes fadeIn {
0% {opacity: 0; display:block;}
100% {opacity: 1;}
}
@-webkit-keyframes fadeOut {
0% {opacity: 1; display:block;}
100% {opacity: 0; display:none;}
}
@keyframes fadeOut {
0% {opacity: 1; display:block;}
100% {opacity: 0; display:none;}
}
li .category-switch {
display:inline-block;
min-width:50px;
min-height:50px;
}
li .category-switch span {
opacity: 1;
display: block;
-webkit-animation: fadeOut 0.5s ease-in; /* Chrome, Safari, Opera */
animation: fadeOut 0.5s ease-in;
}
li .category-switch span.hidden {
opacity: 0;
display: none;
-webkit-animation: fadeIn 0.5s ease-in; /* Chrome, Safari, Opera */
animation: fadeIn 0.5s ease-in;
}
li:hover .category-switch span.hidden {
opacity: 1;
display: block;
}
li:hover .category-switch span:not(.hidden) {
opacity: 0;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>
<a href="#" class="category-switch">
<span><img src="">image 1</span>
<span class="hidden"><img src="">image 1 - hover</span>
</a>
</li>
<li>
<a href="#" class="category-switch">
<span><img src="">imag 2</span>
<span class="hidden"><img src="">image 2 - hover</span>
</a>
</li>
<li>
<a href="#" class="category-switch">
<span><img src="">image 3</span>
<span class="hidden"><img src="">image 3 - hover</span>
</a>
</li>
</ul>
要么从选择器中删除"a",要么在每个"li"元素中使用"a"标签包装span的第一个实例。
解决方案1:
$(".category-switch span").hover(function () {
$(this).fadeToggle();
}, function () {
$(this).fadeToggle();
});
方案二:
<ul>
<li>
<a href="#"><span><img src="">image 1</span></a>
<span style="display:none;"><img src="">image 1 - hover</span>
</li>
<li>
<a href="#"><span><img src="">imag 2</span></a>
<span style="display:none;"><img src="">image 2 - hover</span>
</li>
<li>
<a href="#"><span><img src="">image 3</span></a>
<span style="display:none;"><img src="">image 3 - hover</span>
</li>
</ul>
我添加了一些类并稍微改变了javascript。我没有得到你想要的效果,但fadeIn
和fadeOut
从jquery可能是更好的选择。下面试试。
// Category hover effects
$(".category-switch span.hoverable").mouseover(function () {
$(this).fadeOut();
$(this).next('span').fadeIn();
});
$(".category-switch").mouseleave(function () {
$(this).find('span.hoverable').fadeIn();
$(this).find('span.hoverable').next('span').fadeOut();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="category-switch">
<span class='hoverable'><img src="">image 1</span>
<span style="display:none;"><img src="">image 1 - hover</span>
</li>
<li class="category-switch">
<span class='hoverable'><img src="">image 2</span>
<span style="display:none;"><img src="">image 2 - hover</span>
</li>
<li class="category-switch">
<span class='hoverable'><img src="">image 3</span>
<span style="display:none;"><img src="">image 3 - hover</span>
</li>
</ul>
相关文章:
- 引导程序转盘不工作:堆叠图像(使用rails)
- 单击水平滚动库中的图像以居中显示无法工作的功能
- 图像翻转脚本未按预期工作
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- JQuery图像预览无法工作
- 弹出图像无法使用jquery在html中工作
- JQuery图像滑块和CSS转换只能工作一次
- 卷轴上的视差图像和粘滞标题无法正常工作
- 图像占位符没有't的工作原理与Angular 1中的相同
- 图像看起来像一个只在firefox中工作的按钮
- flexislider无法在现场工作,图像没有旋转,但导航点正在改变
- 更改图像src-dons't工作jquery/js
- JQuery图像大小计算没有'不能在Chrome/Safari中工作
- Fancybox图像点击可以独立工作,但不能与我的其他代码一起工作
- 谷歌图书预览没有在安全的https上显示图书图像链接,但在http上工作.在Google Chrome和Touch浏览器
- Elastislide-如何使其在不同的图像宽度下工作
- Jquery只有在加载图像后才能使fadeIn工作
- 在执行 h:命令链接操作时显示工作图像
- 为什么这个jQuery不能工作?图像淡出和淡出
- Flexslider-如何使用单个方向Nav使两个滑块一起工作(图像和段落文本)