javascript - 如何将 each() 与 mouseenter、mouseover 和 data 属性一起使用
问题描述
我有一个具有一些数据属性的块:
<div class="my-div" data-color="#ff4b4b" data-hover="#000">
Text
</div>
现在我想使用 javascript 使用我的数据属性更改 mouseenter 和 mouseover 上的文本颜色。所以我有:
$(".my-div").each(function() {
$(this).mouseenter(function() {
$(this).css('color', this.dataset.hover);
});
$(this).mouseleave(function() {
$(this).css('color', this.dataset.color);
});
});
如果我有一个 div,它工作正常,但如果我有另一个具有相同类的 div,并且我将鼠标输入和鼠标悬停在一个 div 上,另一个 div 也会做出反应。我应该怎么做才能使它正常工作,也许添加一个索引,我不知道。你能帮我吗?
提前致谢。对不起我的英语不好。
PS不要建议css,为此我必须使用javascript。
解决方案
您的代码应该可以自己运行,但您不需要遍历每个 div 来检查鼠标是否进入或离开了每个div
元素 - 这是非常低效的。
所以删除:
$(".my-div").each(function() {});
您的新代码应如下所示:
$(".my-div").mouseenter(function() {
$(this).css('color', this.dataset.hover);
});
$(".my-div").mouseleave(function() {
$(this).css('color', this.dataset.color);
});
.my-div {
position: relative;
display: inline-block;
width: 100px;
height: 100px;
color: #ff4b4b;
border: 1px solid #000000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="my-div" data-color="#ff4b4b" data-hover="#000">
Text
</div>
<div class="my-div" data-color="#ff4b4b" data-hover="#000">
Text
</div>
<div class="my-div" data-color="#ff4b4b" data-hover="#000">
Text
</div>
显然 CSS 不是必需的,但我添加了它以证明它可以正常工作。
推荐阅读
- swift - 故事板在模拟器 ipad 上的快速显示方式不同
- ios - Alamofire doesn't execute whole code in response closure
- ios - 如何将 RGBA 转换为 UIColor 并返回
- julia - 如何在 julia Plots 中更改图例中的线宽?
- firebase - 无法从 GCP Cloud Build 部署到 Firebase 托管
- mysql - 尝试在 Ubuntu 18.04 上安装 mysqlclient 时出现一个奇怪的错误
- appinsights - 应用程序洞察跟踪 System.IO.StreamWriter.write 异常处的 System.OverflowException
- c++ - Allegro5 C++:无法加载音频样本
- c++ - 如何优化这个排序代码,这不是在时限内执行。这个问题来自hackerrank
- reactjs - 世博会构建失败 ENOENT