javascript - 如何使用元素数据属性最小化功能重复?
问题描述
我的 jQuery 代码正在运行,但我想通过数据属性将其最小化。请看下面我的 HTML 和 jQuery 代码。
下面的功能最多重复四次,我想最小化/减少这种重复。提前致谢。
$('.nav-menu-list ul li:nth-child(1)').hover(function() {
$('#item-01').fadeIn();
}, function() {
$('#item-01').fadeOut();
});
$('.nav-menu-list ul li:nth-child(2)').hover(function() {
$('#item-02').fadeIn();
}, function() {
$('#item-02').fadeOut();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="nav-menu-list">
<ul>
<li data-id="item-01"><h2>home</h2></li>
<li data-id="item-02"><h2>about us</h2></li>
<li data-id="item-03"><h2>category</h2></li>
<li data-id="item-04"><h2>news room</h2></li>
<li data-id="item-05"><h2>blog</h2></li>
<li data-id="item-06"><h2>contact us</h2></li>
</ul>
</span>
<span class="nav-menu-list-details">
<div id="item-01"><img src="images/home-preview.png" alt="" /></div>
<div id="item-02"><img src="images/home-preview.png" alt="" /></div>
<div id="item-03"><img src="images/home-preview.png" alt="" /></div>
<div id="item-04"><img src="images/home-preview.png" alt="" /></div>
<div id="item-05"><img src="images/home-preview.png" alt="" /></div>
<div id="item-06"><img src="images/home-preview.png" alt="" /></div>
</span>
解决方案
您应该考虑事件目标是单个对象,即使目标包含多个项目:
$('.nav-menu-list ul li').hover(function() {
var id = $(this).data().id;
$("#"+id).fadeIn();
}, function(){
var id = $(this).data().id;
$('#'+id).fadeOut();
});
推荐阅读
- javascript - setState 与 toUpperCase 反应原生后的奇怪问题
- reactjs - 如何让 Jest 转换 Material UI 样式助手?
- symfony - 在 symfony webpack encore 中使用基本的 js 库(不是节点模块)
- oracle - 如何从用另一个脚本 SQL Plus 编写的查询中进行选择?
- android - 处理 Webview 上的 HTML onClick 函数。未调用 shouldOverrideUrlLoading()
- r - 绘图标签在 Linux 服务器上的 R Jupyter 笔记本中显示为十六进制 ASCII 代码
- angular - 在第一页加载时可观察到未定义 - 提供工作和非工作实现,寻找原因
- python - 如何在python中获取列表元素的所有组合?
- python - 为每组按数据提取组
- c++ - 启动新屏幕时 QT Quick 从 C++ 向 QML 发送数据