jquery - mouseenter mouseleave 一次只影响一张卡
问题描述
我有一个页面,上面有许多引导卡,卡片上有一个人的图像。我想悬停整张卡片,让图像从黑白变为彩色。
我使用 css 灰度和悬停效果很好,但仅在悬停在图像而不是卡体上时。我想我会尝试 jquery 并做一个在某种程度上有效的 mouseenter mouseleave 函数。问题是当我悬停一个卡片主体时,页面上的每个图像都从黑白变为彩色,考虑到所有图像共享同一个类,这是有道理的。我只是想让悬停的任何一张卡片变成颜色。
HTML:
<div class="card mt-6 shadow filter sales-filt w-25">
<div class="">
<img src="images/alecPeople.png" class="card-img" alt="">
</div>
<div class="card-body">
<h6 class="card-title mb-0 text-uppercase">Alec Koyer</h6>
<p class="card-text mb-3 people-p text-green fw-bold">Sales</p>
<button class="js-video-button btn-people--launch" data-video-id='333' data-channel="vimeo"><i class="fas fa-play"></i></button>
</div>
</div>
JS:
$('.card-body').on('mouseover mouseout',function(){
$('.card-img').toggleClass('card-img-hover')
});
悬停卡体部分,图像变为颜色,但只有悬停的卡体
解决方案
您需要参考相对于悬停的卡片图像元素。通过this
用作选择元素的上下文,您只针对悬停卡片内的元素。
$('.card-body').on('mouseover mouseout',function(){
var cardImg = $(this).find('.card-img');
cardImg.toggleClass('card-img-hover');
});
这没有用,但它为我指明了正确的方向,非常感谢!:) 我最终不得不选择整个卡片元素,而不仅仅是卡片主体:
$('.card').on('mouseover mouseout',function(){
var cardImg = $(this).find('.card-img');
cardImg.toggleClass('card-img-hover');
});
推荐阅读
- filter - 使用 dataTables 和 SearchPane 插件过滤表后更新 SearchPane 过滤器值
- blockchain - 有人设法用 Web3.js@1.0.0 获得 ERC20 代币的余额?
- r - 合并行长不一致的csv文件并将basename保留为列标题
- php - 如何将模型传递给作业/队列以处理图像
- javascript - Jquery 到 Vanilla js,字体大小自动
- reactjs - react setState中直接改prevState可以吗?
- jquery - Jquery UI自动完成选择事件在chrome 74中不起作用
- ios - 如何使用白色文本和占位符使 UISearchBar 透明
- bash - BASH Trap CTRL+C 然后完全退出脚本
- woocommerce - 在 WooCommerce 中提交审核后在产品页面上显示通知